简介
斐波那契数列(Fibonacci sequence),又称黄金分割数列 [1],因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称“兔子数列”,其数值为:1、1、2、3、5、8、13、21、34……在数学上,这一数列以如下递推的方法定z义:F(0)=1,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)。
运用知识:
函数,条件语句,递归。
递归:
Base case(递归出口)。可以把 base case 看成是最简单的函数输入情况,或则是递归终止条件。
Recursive call on a smaller problem(递归调用一个较小的问题)。我们可以将此步骤视为对当前问题所依赖的较小问题调用函数(分治)。假设对这个小问题的递归调用会给预期的结果,这种想法称为“信念的递归飞跃”(recursive leap of faith)。
Solve the larger problem。在步骤2中,我们找到了一个较小问题的结果。我们现在想要使用这个结果来计算当前问题的结果应该是什么,这就是我们想要从当前函数调用中返回的结果。
(优快云博主「Balaaam」文章截取)
代码展示
递归版
#include <stdio.h>
int Fei(int a)
{
if (a <= 2)
{
return 1;
} else
{
return Fei(a - 1) + Fei(a - 2);//运用递归
}
}
int main() {
int a = 0;
scanf("%d", &a);//输入值
int ret = Fei(a);
printf("%d", ret);//打印
return 0;
}
原版
#include <stdio.h>
int main()
{
int a = 1, b = 1, c = 0;
int i = 0, o = 0;
scanf("%d", &o);//输入
if (o == 1 || o == 2)
{
printf("1");
} else {
for (i = 3; i <= o; i++)//运用循环语句实现累加
{
c = a + b;
a = b ;
b = c ;
}
printf("%d", c);//输出
}
return 0;
}