C++编程【斐波那契数列】
时间: 2023-09-11 15:06:23 浏览: 40
好的,我知道斐波那契数列。斐波那契数列指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递归的方法定义: F(0) = 0, F(1) = 1; F(n) = F(n-1) + F(n-2) (n≥2,n∈N*)。
在C语言中可以写出以下代码实现斐波那契数列的计算:
```c
#include<stdio.h>
int fibonacci(int n) {
if(n==0) {
return 0;
}
if(n==1 || n==2) {
return 1;
}
int a=1, b=1, c;
for(int i=3; i<=n; i++) {
c=a+b;
a=b;
b=c;
}
return c;
}
int main() {
int n;
printf("请输入要计算的斐波那契数列数的项数: ");
scanf("%d",&n);
printf("第%d项的值为:%d\n",n,fibonacci(n));
return 0;
}
```
这段代码使用了循环的方式计算斐波那契数列的值,如果输入的数为0,则输出的值为0,如果是1或2,则输出的值为1,其它的项数按照递推公式计算。
相关问题
斐波那契数列编程c++
#include <stdio.h>
// 递归方式实现斐波那契数列
int fib(int n) {
if (n <= 1) {
return n;
} else {
return fib(n-1) + fib(n-2);
}
}
// 循环方式实现斐波那契数列
int fibLoop(int n) {
int a = 0, b = 1, c, i;
if (n == 0) {
return a;
}
for (i = 2; i <= n; i++) {
c = a + b;
a = b;
b = c;
}
return b;
}
int main() {
int n = 10;
printf("斐波那契数列前 %d 项为:\n", n);
for (int i = 0; i < n; i++) {
printf("%d ", fib(i));
}
printf("\n");
for (int i = 0; i < n; i++) {
printf("%d ", fibLoop(i));
}
return 0;
}
用c++泛型编程实现斐波那契数列
可以使用递归或循环来实现斐波那契数列,以下是一个使用模板的循环实现:
```cpp
template<typename T>
T fibonacci(T n) {
if (n <= 1) {
return n;
}
T a = 0, b = 1, c;
for (T i = 2; i <= n; i++) {
c = a + b;
a = b;
b = c;
}
return b;
}
```
这个函数使用模板来支持不同类型的计算,而且使用一个循环来避免使用递归时可能出现的堆栈溢出问题。可以像这样调用:
```cpp
int main() {
std::cout << fibonacci<int>(10) << std::endl; // 输出 55
std::cout << fibonacci<unsigned long long>(50) << std::endl; // 输出 20365011074
return 0;
}
```