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; }