递归

递归_3分词条

目录 [隐藏]

递归 概述

       

递归做为一种算法程序设计语言中广泛应用.

递归 含义

       

是指函数/过程/子程序在运行过程序中直接间接调用自身而产生的重入现像.

在计算机编程里,递归指的是一个过程:函数不断引用自身,直到引用的对象已知

使用递归解决问题,思路清晰,代码少。但是在主流高级语言中(如C语言Pascal语言等)使用递归算法要耗用更多的栈空间,所以在堆栈尺寸受限制时(如嵌入式系统或者内核态编程),应避免采用。所有的递归算法都可以改写成与之等价的非递归算法

汉诺塔问题,是常见可用递归解决的问题,不过也有非递归的解法。

菲波纳契数列可用递归定义。

以下为求汉诺塔问题的Pascal程序:

   procedure Hanoi(n:integer;x,y,z:char);
       begin
           if n<>1 then begin
               Hanoi(n-1,x,z,y);
               writeln(x,n,z);
               Hanoi(n-1,y,x,z);
           else writeln(x,n,z);
           end;
       end;
上述程序用接近自然语言的伪代码可表述如下:

  Hanoi 过程 (整型参数 n; 字符型参数 x,y,z);
          //注:n 代表本步中要处理的盘子数,x,y,z 分别表示 n 号盘子原来所在柱子、经由柱子、目标柱子
       开始
           如果 n 不为 1 ,那么:开始
               调用 Hanoi 过程 (参数为 n-1,x,z,y);
                //注:这一步表示用本过程方法将剩余 n-1 个盘子从柱子 x 经由柱子 z 移动到柱子 y
             输出 x,n,z;    //注:表示将 n 号盘子从 x 移动到 z
             调用 Hanoi 过程 (参数为 n-1,y,x,z);
                //注:这一步表示用本过程方法将剩余 n-1 个盘子从柱子 y 经由柱子 x 移动到柱子 z
          结束;    //以上程序段就完成了把 n 个盘子从柱子 x 经由柱子 y 移动到柱子 z
          否则 输出 x,n,z;    //注:若 n 为1 的话本句直接输出表示将 n 号盘子从 x 移动到 z
      结束;

附图

上传图片 

互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。如需转载,请注明来源于www.hudong.com

被引用: 递归已被如下媒体引用 我来补充
开放分类: 我来补充
数学术语
数据结构
术语
电脑术语

讨论区

更多>>

编辑者

共6人协作

相关词条

可计算性理论
OLLYDBG
能行性和一般递归
递归论
plascal教程
模块测试
递归算法
asp
EOS
pascal语言教程part-2
更多

英译

Copyright © 2005-2009 hudong.com Ltd. All Rights Reserved. 互动在线 版权所有