water_boy_Lee
lerrorgk
2017-08-12 09:30
采纳率: 60%
浏览 1.4k
已采纳

斐波那契数列的递归和非递归法两种表示方法能解释一下是为什么呢?

非递归法
unsigned long long Fibonacci(unsigned long long n)
{
int n1, n2, temp, i;
if (n > 2)
for (n1 = 1, n2 = 1, i = 3; i <= n; i++)
{
temp = n1 + n2;
n1 = n2;
n2 = temp;
}
else n2 = 1;

return n2;

}
递归法
unsigned long long Fibonacci(unsigned long long n)
{
if(n > 2)
return Fibonacci(n - 1) + Fibonacci(n - 2);
else
return 1;
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qq_32866009
    夜幕下的ACM之路 2017-08-12 13:15
    已采纳

    非递归的话是不断更新两个斐波那契数来实现求n个斐波那契数,递归的话是不断的把一个斐波那契数表示成两个斐波那契数的和的形式,然后找到最低端的斐波那契数,然后不断的回溯。

    点赞 评论
  • qq_38576126
    ACM小学生 2017-08-12 09:51

    非递归是从第一,第二位按照斐波那契的规律不断往后加,一直加到第n位,返回第n位的值
    递归是从第n-1位和第n-2位往前推算,直到递归到了第一,第二位的时候返回第一,第二位的值1,然后根据规律往后递推得到第n位的值

    点赞 评论

相关推荐