递归算法

一、递归算法

  递归:你打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门,你继续打开它。若干次之后,你打开面前的门后,发现只有一间屋子,没有门了。然后,你开始原路返回,每走回一间屋子,你数一次,走到入口的时候,你可以回答出你到底用这你把钥匙打开了几扇门。

   循环:你打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门(若前面两扇门都一样,那么这扇门和前两扇门也一样;如果第二扇门比第一扇门小,那么这扇门也比第二扇门小,你继续打开这扇门,一直这样继续下去直到打开所有的门。但是,入口处的人始终等不到你回去告诉他答案。

1、定义:

  在数学与计算机科学中,递归(Recursion)是指在函数的定义中使用函数自身的方法。实际上,递归,顾名思义,其包含了两个意思:递 和 归,这正是递归思想的精华所在。

2、实例:

static void  Main(string[] args)
  {
    int[] sum = new int[30];
    for (int i = 0; i < sum.Length; i++)
    {
      sum[i] = process1(i);
      Console.WriteLine(sum[i]);
    }
  }
public static int process1(int a)
 {
    if (a == 0 || a == 1) return 1;

    return process1(a - 1) + process1(a - 2);
  }

3、阶乘算法:

 public static int process2(int n)
  {
    if (n == 1) return 1;

    return n * process2(n - 1); // 相同重复逻辑,缩小问题的规模
  }
posted @ 2022-03-24 09:25  码农阿亮  阅读(90)  评论(0编辑  收藏  举报