递归算法的实现

如题所述

如何设计递归算法
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); //调用函数本身进行返回 }}

温馨提示:答案为网友推荐,仅供参考
相似回答