斐波那契数列第n项C语言
时间: 2024-01-11 12:19:10 浏览: 30
斐波那契数列是指从第三项开始,每一项都等于前两项之和的数列。斐波那契数列的前几项为0、1、1、2、3、5、8、13、21、34、55、89、144……,其中第0项为0,第1项为1。斐波那契数列第n项的值可以通过递归或循环实现。递归实现的代码比较简洁,但是效率较低,容易出现栈溢出的问题;循环实现的代码效率较高,但是代码相对较长。以下是两种实现方式的代码:
递归实现:
int fib(int n) {
if(n==0)
return 0;
else if(n==1||n==2)
return 1;
else
return (fib(n-1)+fib(n-2));
}
循环实现:
int fib(int n) {
if(n<=1)
return n;
int a=0,b=1,c;
for(int i=2;i<=n;i++) {
c=a+b;
a=b;
b=c;
}
return b;
}
相关问题
输出斐波那契数列前n项c语言
#include <stdio.h>
int main() {
int n, i;
int f1 = 0, f2 = 1, f3;
printf("请输入要输出的斐波那契数列的项数:");
scanf("%d", &n);
printf("斐波那契数列前%d项为:\n", n);
printf("%d %d ", f1, f2);
for (i = 3; i <= n; i++) {
f3 = f1 + f2;
printf("%d ", f3);
f1 = f2;
f2 = f3;
}
return 0;
}
c语言斐波那契数列第n项值
以下是两种C语言实现斐波那契数列第n项值的方法:
1.递归法
```c
#include <stdio.h>
int Fibonacci(int n) {
if (n == 1 || n == 2) {
return 1;
} else {
return Fibonacci(n-1) + Fibonacci(n-2);
}
}
int main() {
int n;
printf("请输入n的值:");
scanf("%d", &n);
printf("斐波那契数列的第%d项为:%d\n", n, Fibonacci(n));
return 0;
}
```
2.数组法
```c
#include <stdio.h>
int Fibonacci(int n) {
int arr[40] = {0, 1};
for (int i = 2; i <= n; i++) {
arr[i] = arr[i - 1] + arr[i - 2]; }
return arr[n];
}
int main() {
int n;
printf("请输入n的值:");
scanf("%d", &n);
printf("斐波那契数列的第%d项为:%d\n", n, Fibonacci(n));
return 0;
}
```