C语言递归法求斐波那契数列
时间: 2023-04-05 15:01:44 浏览: 664
斐波那契数列可以使用递归法来求解,代码如下:
```c
int fibonacci(int n) {
if (n == 0 || n == 1) {
return n;
} else {
return fibonacci(n-1) + fibonacci(n-2);
}
}
```
这个函数接受一个整数参数n,返回斐波那契数列的第n项。如果n为0或1,直接返回n;否则,递归调用函数本身来计算前两项的和。
相关问题
c语言用递归法求斐波那契数列
以下是使用递归法求解斐波那契数列的C语言代码:
```c
#include <stdio.h>
int fib(int n) {
if (n <= 1) {
return n;
}
return fib(n-1) + fib(n-2);
}
int main() {
int n;
printf("请输入要求第几个斐波那契数:");
scanf("%d", &n);
printf("第%d个斐波那契数为%d\n", n, fib(n));
return 0;
}
```
用c语言写尾递归法求斐波那契数列
在C语言中,可以使用尾递归法编写一个斐波那契数列的函数。尾递归是指函数在其最后一步调用了自身,并且该调用的结果就是函数的返回值。以下是使用C语言实现的尾递归版本:
```c
#include <stdio.h>
// 尾递归版的斐波那契数列函数
unsigned long long fibonacci_tail(unsigned long long fib_n, unsigned long long prev, unsigned long long curr) {
if (fib_n <= 1) {
return fib_n; // 基线条件:如果n小于等于1,直接返回n
} else {
return fibonacci_tail(fib_n - 1, curr, prev + curr); // 递归调用,更新prev和curr
}
}
int main() {
unsigned long long n = 10; // 求第10个斐波那契数
unsigned long long result = fibonacci_tail(n, 0, 1);
printf("The %lu-th Fibonacci number is: %llu\n", n, result);
return 0;
}
```
在这个代码中,`fibonacci_tail` 函数接受三个参数:当前的索引 `fib_n`,以及前两个斐波那契数 `prev` 和 `curr`。如果 `fib_n` 小于等于1,说明已经到达基本情况,直接返回 `fib_n`。否则,通过递归调用自身,更新 `prev` 和 `curr` 的值。
注意:C语言的标准库并不支持长时间的递归,可能会因为栈溢出而终止。对于较大的斐波那契数,建议使用循环或者其他非递归方法计算。
阅读全文