C语言 递归函数

递归函数我总结有三步:

一、函数判断条件;

二、数学规律;

三、初值;

例如 斐波那契数列: 1  1   2   3   5   8   13   21   34   56   ……

if (n == 1 || n==2)
{
return 1; } else { return Fibonacci(n-1) + Fibonacci(n-2); }

这样也可以通过数组来做

int num; 
printf("请输入需要多少位数的值\n");
scanf("%d",&num);
int *a = (int*)malloc(sizeof(int)*(num+1));
a[0] = 0;
a[1] = 1;
for (int i = 2; i <= num; i++)
{
a[i] = a[i-1] + a[i-2];
}
printf("第%d位是%d\n",num,a[num]); 
free(a);

改动一下数列:

例如:有一对兔子,从出生3个月后第四个月初起每个月都生一对兔子,小兔子长三个月后下一个月初起每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(3个月后!!不是斐波那契数列)

if (month > 3)
{
return rabbit_sum(month - 1) + rabbit_sum (month - 3); } else { return 2; }

再比如:一个 N 阶的楼梯,每次能走一层或者两层,问一共有多少种走法。(都是一个意思)

if (num > 1)
{
    return number(num-1) + number(num-2);
}
else
{
    return 1;
}

 

posted @ 2020-09-19 22:38  归江渡鸟泅白浪  阅读(408)  评论(0编辑  收藏  举报