任务:求指定位置的Fibonacci数列的值
用递归函数的程序:
#include<stdio.h>
// 斐波那契数列:1,1,2,3,5,8,13,21,...
int fib(n);
int main(void)
{
int n = 0;
printf("想求第几个斐波那契数列的值(输入q停止循环):");
while (scanf("%d", &n) == 1)
{
printf("第%d个斐波那契数列的值是:%d\n", n, fib(n));
printf("想求第几个斐波那契数列的值(输入q停止循环):");
}
return 0;
}
int fib(n)
{
if (n <= 2)
{
return 1;
}
else
{
return fib(n - 1) + fib(n - 2);
}
}
结果:
想求第几个斐波那契数列的值(输入q停止循环):1
第1个斐波那契数列的值是:1
想求第几个斐波那契数列的值(输入q停止循环):2
第2个斐波那契数列的值是:1
想求第几个斐波那契数列的值(输入q停止循环):6
第6个斐波那契数列的值是:8
想求第几个斐波那契数列的值(输入q停止循环):8
第8个斐波那契数列的值是:21
想求第几个斐波那契数列的值(输入q停止循环):q
使用循环的程序:
代码:
#include<stdio.h>
// 斐波那契数列:1,1,2,3,5,8,13,21,...
int fib(n);
int main(void)
{
int n = 0;
printf("想求第几个斐波那契数列的值(输入q停止循环):");
while (scanf("%d", &n) == 1)
{
printf("第%d个斐波那契数列的值是:%d\n", n, fib(n));
printf("想求第几个斐波那契数列的值(输入q停止循环):");
}
return 0;
}
int fib(n)
{
int a = 1, b = 1, c = 1;
while (n>2)
{
c = a + b;
a = b;
b = c;
n--;
}
return c;
}