开发者社区> 问答> 正文

递归算法的实现

递归算法的实现

展开
收起
知与谁同 2018-07-19 19:48:32 1453 0
1 条回答
写回答
取消 提交回答
  • Nothing for nothing.

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

    2019-07-17 22:54:33
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载