#include <stdio.h>
int fibonaci(int i)
{
if(i == 0)
{
return 0;
}
if(i == 1)
{
return 1;
}
return fibonaci(i-1) + fibonaci(i-2);
}
int main()
{
int i;
for (i = 0; i < 10; i++)
{
printf("%d\t", fibonaci(i));
}
return 0;
}
我读到这个函数表示一个二叉树。为什么会这样?我浏览了所有相关答案,但都未能提供适当的解释。任何有关递归的帮助文档将不胜感激。如果可能的话,给我一些超链接。我会对我非常有帮助。
最佳答案
调用自身的函数称为 recursive function
而调用函数本身的过程称为recursion
在C编程中。这里是fibonaci(i)
称为 10
次。
fibonacci series
是这样的:1, 1, 2, 3, 5, 8, 13, 21, 34
从 0 和 1 开始,系列中的每个新数字都是之前两个数字的总和。
if(i == 0)
{
return 0;
}
if(i == 1)
{
return 1; //returns 1 if i=1
}
return fibonaci(i-1) + fibonaci(i-2); // if it is 2 or greater than 2
在 mathematical terms
,斐波那契数列Fn由递推关系定义
F_n = F_{n-1} + F_{n-2}
带有种子值
F_0 = 0 \quad\text{and}\quad F_1 = 1.
编写一个返回 F_n 的函数 int fib(int n)。例如,如果 n = 0,则 fib() 应返回 0。如果 n = 1,则应返回 1。如果 n > 1,则应返回 F_{n-1} + F_{n-2}
。
关于c - 递归调用流程解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20836244/