一列数:从1开始,前两项为1,从第三项开始每一项等于前两项之和。
例:1 1 2 3 5 8 13
推导出公式则为:
n<3时
f(n)=1;
n>2时
f(n)=f(n-1)+f(n-2);
递归算法:
#include<stdio.h>
int fib(int n)
{
if (n <= 2)
{
return 1;
}
else {
return fib(n - 1) + fib(n - 2);
}
}
int main()
{
int n = 0;
scanf("%d", &n);
fib(n);
printf("%d", fib(n));
system("pause");
return 0;
}
非递归
#include<stdio.h>
int main()
{
int a = 1;
int b = 1;
int c = 0;
int n = 0;
int i = 0;
scanf(“%d”,&n);
for (i = 0; i <= n; i++)
{
c = a + b;
a = b;
b = c;
}
printf("%d", c);
system("pause");
return 0;
}