斐波那契数列递归 c语言
时间: 2023-12-10 21:35:53 浏览: 99
以下是C语言中使用递归方法求解斐波那契数列的第n项的代码:
```c
#include <stdio.h>
int fibonacci(int n) {
if (n <= 1) {
return n;
} else {
return fibonacci(n-1) + fibonacci(n-2);
}
}
int main() {
int n = 10; // 求斐波那契数列的第10项
int result = fibonacci(n);
printf("斐波那契数列的第%d项为:%d", n, result);
return 0;
}
```
运行结果为:
```
斐波那契数列的第10项为:55
```
相关问题
斐波那契数列尾递归c语言求n
斐波那契数列是一个经典的数学序列,每个数字都是前两个数字之和,通常从0和1开始,即F(0) = 0, F(1) = 1,之后的项依次是F(n) = F(n-1) + F(n-2)。在C语言中,我们可以使用尾递归优化的方式来编写一个计算第n项的函数,以避免栈溢出的问题。尾递归是指函数在其最后一步调用了自身,并且返回值直接作为该调用的结果。
下面是一个利用尾递归求解斐波那契数列的例子:
```c
#include <stdio.h>
// 尾递归版本的斐波那契函数
int fibonacci_tail(int n, int a = 0, int b = 1) {
if (n == 0)
return a;
else if (n == 1)
return b;
else
return fibonacci_tail(n - 1, b, a + b);
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
if (n <= 0) {
printf("错误:输入的数值必须大于0。\n");
} else {
printf("斐波那契数列的第%d项是:%d\n", n, fibonacci_tail(n));
}
return 0;
}
```
在这个程序中,`fibonacci_tail`函数通过传递当前状态的a和b以及剩余需要计算的项n-1,实现了每次递归只保留必要的信息,避免了栈的增长。
用递归写一个斐波那契数列,c语言。
```
#include <stdio.h>
int fibonacci(int n)
{
if(n == 0 || n == 1)
return n;
else
return fibonacci(n-1) + fibonacci(n-2);
}
int main()
{
int n, i;
printf("输入要输出的斐波那契数列的长度:");
scanf("%d", &n);
printf("斐波那契数列:\n");
for(i=0; i<n; i++)
printf("%d ", fibonacci(i));
return 0;
}
```
运行结果:
输入要输出的斐波那契数列的长度:10
斐波那契数列:
0 1 1 2 3 5 8 13 21 34
阅读全文