递归调用流解释? #包括 int菲波纳奇(int i) { 如果(i==0) { 返回0; } 如果(i==1) { 返回1; } 返回fibonaci(i-1)+fibonaci(i-2); } int main() { int i; 对于(i=0;i1,它应该返回F{n-1}+F{n-2}
我已经读到这个函数表示一个二叉树。为什么会这样?我浏览了所有相关的答案,但都没有提供适当的解释。任何关于递归的帮助文档都将不胜感激。如果可能的话,给我提供一些超链接。我会非常有帮助。在C编程中,调用自身的函数称为递归调用流解释? #包括 int菲波纳奇(int i) { 如果(i==0) { 返回0; } 如果(i==1) { 返回1; } 返回fibonaci(i-1)+fibonaci(i-2); } int main() { int i; 对于(i=0;i1,它应该返回F{n-1}+F{n-2},c,recursion,fibonacci,C,Recursion,Fibonacci,我已经读到这个函数表示一个二叉树。为什么会这样?我浏览了所有相关的答案,但都没有提供适当的解释。任何关于递归的帮助文档都将不胜感激。如果可能的话,给我提供一些超链接。我会非常有帮助。在C编程中,调用自身的函数称为递归函数,调用函数本身的过程称为递归。在这里,fibonaci(i)被称为10次 斐波那契数列是这样的:1,1,2,3,5,8,13,21,34 从0和1开始,序列中的每个新数字都是它前面两个数字的总和 #include <stdio.h> int fibonaci(int
递归函数
,调用函数本身的过程称为递归
。在这里,fibonaci(i)
被称为10次
斐波那契数列是这样的:1,1,2,3,5,8,13,21,34
从0和1开始,序列中的每个新数字都是它前面两个数字的总和
#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;
}
在数学术语
中,斐波那契数的序列Fn由递推关系定义
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
有种子价值
F_n = F_{n-1} + F_{n-2}
编写一个返回F_n的函数int fib(int n)。例如,如果n=0,则fib()应返回0。如果n=1,那么它应该返回1。对于n>1,它应该返回F{n-1}+F{n-2}
你能告诉我为什么它被称为二叉树吗
程序中的函数执行序列可以描述为一棵树,例如。g
F_0 = 0 \quad\text{and}\quad F_1 = 1.
对应于树
program()
{
input(x);
proc(x);
output(x);
}
大小(节点数)为4,高度为1(假设输入、过程和输出为叶函数)
现在,如果一个函数以及从中调用的每个函数最多执行两个函数调用(就像您的fibonaci()
一样),则对应的图是一个二叉树,因为每个节点最多有两个子节点。树的示例以调用fibonaci(5)
开始,然后缩写为f
:
program()
/ | \
input(x) proc(x) output(x)
为什么不使用调试器?对不起,我的错!不需要解释。你能告诉我为什么它被称为二叉树吗?我希望这个问题是公平的!
fibonaci(5)
/ \
f(4) f(3)
/ \ / \
f(3) f(2) f(2) f(1)
/ \ / \ / \
f(2) f(1) f(1) f(0) f(1) f(0)
/ \
f(1) f(0)