#include <stdio.h>
int f(int n)
{
if (n == 0) return 1;
if (n == 1) return 1;
return f(n - 1) + f(n - 2);
}
int main()
{
printf("%d", f(6));
return 0;
}
//为什么不是
第一次 f(6-1)+f(6-2)
第二次 f(5-1)+f(4-2)
。这样啊
#include <stdio.h>
int f(int n)
{
if (n == 0) return 1;
if (n == 1) return 1;
return f(n - 1) + f(n - 2);
}
int main()
{
printf("%d", f(6));
return 0;
}
//为什么不是
第一次 f(6-1)+f(6-2)
第二次 f(5-1)+f(4-2)
。这样啊
f(6-1)向下就是f(5-1)和f(5-2),因为往下调用后,n的值变为了5。
测试如下:
参考链接:
深度剖析C语言函数递归(图文并茂) - C语言中文网
函数递归是一种常用的编程技术,能够帮助解决一些复杂问题,如计算阶乘、生成斐波那契数列等。本节将讲解函数递归调用的原理和使用方法。 下面是一个函数递归的示例程序: #i
https://c.biancheng.net/view/ublqxtz.html
#include <stdio.h>
int f(int n)
{
if (n == 0) return 1;
if (n == 1) return 1;
return f(n - 1) + f(n - 2);
}
int main()
{
// https://c.biancheng.net/view/ublqxtz.html
// 调用f(6)的大概执行过程如下:
// f(6)
// f(6-1) f(6-2)
// f(5-1) f(5-2) f(4-1) f(4-2)
// f(4-1) f(4-2) f(3-1) f(3-2) f(3-1) f(3-2) f(2-1) f(2-2)
// f(3-1) f(3-2) f(2-1) f(2-2) f(2-1) f(2-2) f(1-1) f(2-1) f(2-2) f(1)=1 f(1)=1 f(0)=1
// f(2-1) f(2-2) f(1)=1 f(1)=1 f(0)=1 f(1)=1 f(0)=1 f(0)=1 f(1)=1 f(0)=1
// f(1)=1 f(0)=1
// 因为n=0或者n=1为递归函数f()的终止条件,所以当执行到f(1)或者f(0),递归函数就一步步往上将值返回
// 最终,将所有最终的值加起来就是f(6)的结果,一共13个1,所以结果是13
printf("%d", f(6));
return 0;
}
