递归算法的实现

 我来答
途沈途l
2016-05-10 · 超过59用户采纳过TA的回答
知道答主
回答量:171
采纳率:66%
帮助的人:55.9万
展开全部

如何设计递归算法
1.确定递归公式
2.确定边界(终了)条件
递归的一般模式
procedure aaa(k:integer);
begin
if k=1 then (边界条件及必要操作)
else begin
aaa(k-1);
(重复的操作);
end;
end;
C#:例子
例:一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少。
public class MainClass  {  public static void Main()  {  Console.WriteLine(Foo(30));  }  public static int Foo(int i)  {  if (i <= 0)  return 0;  else if(i > 0 && i <= 2)  return 1;  else return Foo(i -1) + Foo(i - 2);  }  }
又如:
procedure a;
begin
.
.
.
a;
.
.
.
end;
这种方式是直接调用.
又如:
procedure c(形参);forward;
procedure b;
局部说明
begin
. .
c(实参);
. .
end;
procedure c;
局部说明;
begin
. .
b;
. .
end;
这种方式是间接调用.
例1计算n!可用递归公式如下:
fac:=n*fac(n-1) {当n>0时}
fac(n)={
fac:=1; { 当n=0时}
可编写程序如下:
program facn;
var
n:integer;
function fac(n:integer):real;
begin
if n=0
then fac:=1
else fac:=n*fac(n-1);
end;
begin
write('n=');readln(n);
writeln(n,'!=',fac(n):0:0);
end. JavaScript:例子//递归算法//递归算法function recursionAlgorithm(num){ if(num <= 1)//判断如果num小于等于1的情况下,返回本身 {    return 1; }else {   return num * arguments.callee(num - 1); //调用函数本身进行返回 }}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式