递归调用流解释? #包括 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}

递归调用流解释? #包括 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

我已经读到这个函数表示一个二叉树。为什么会这样?我浏览了所有相关的答案,但都没有提供适当的解释。任何关于递归的帮助文档都将不胜感激。如果可能的话,给我提供一些超链接。我会非常有帮助。

在C编程中,调用自身的函数称为
递归函数
,调用函数本身的过程称为
递归
。在这里,
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)