斐波拉契数列
输入正整数n,输出斐波拉契数列的前n项的和
要求不含汉字,用C++
需要注意n有一个范围,此程序n为93时,long long就溢出了。
#include<iostream>
using namespace std;
int main()
{
int num;
cout << "计算前多少项?\n";
cin >> num;
long long int a[94] = { 1,1 };
long long int sum = 0;
int i;
for (i = 2; i < num; i++)
{
a[i] = a[i - 1] + a[i - 2];
cout << a[i] << ' ';
sum+=a[i];
}
cout<<endl<<"sum:"<<sum<<endl;
return 0;
}
这里没使用递归是因为递归太慢了。
long fibonacci(int n) {
if (n == 0 || n == 1) {
return n;
}
else {
return fibonacci(n-1) + fibonacci(n-2);
}
}
#include<bits/stdc++.h>
using namespace std;
int f[99999999];
int main()
{
int n;
cin>>n;
f[1]=1;
f[2]=1;
for(int i=3;i<=n;i++)
{ f[i]=f[i-1]+f[i-2] }
cout<<f[n];
return 0;
}
/* Alkaid#3529 */
#include <iostream>
using namespace std;
/* 输出斐波那契额数列的前n项 循环方式 */
int fibonacci_circulate(int n);
int main()
{
int n;
for (;;)
{
cin >> n;
if (cin.fail())
{
cin.clear();
cin.ignore(1024, '\n');
}
else
break;
}
cout << n << fibonacci_circulate(n) << endl;
return 0;
}
int fibonacci_circulate(int n)
{
long long f1 = 1, f2 = 1;
int time = (n + 1) / 2;
for (int i = 1; i < time; i++)
{
f1 = f1 + f2;
f2 = f2 + f1;
}
if (n % 2 == 0)
return f2;
else
return f1;
}
【以下回答由 GPT 生成】
#include <iostream>
int fibonacci(int n) {
int fib1 = 0; // 第一项
int fib2 = 1; // 第二项
int sum = fib1 + fib2; // 前两项之和
for (int i = 3; i <= n; i++) {
int fib = fib1 + fib2;
sum += fib;
fib1 = fib2;
fib2 = fib;
}
return sum;
}
int main() {
int n;
std::cout << "请输入要计算的斐波那契数列的项数n:";
std::cin >> n;
int sum = fibonacci(n);
std::cout << "斐波那契数列的前" << n << "项和为:" << sum << std::endl;
return 0;
}
这个程序首先通过用户输入获得要计算的斐波那契数列的项数n。然后使用迭代的方式计算前n项的斐波那契数,并将它们累加到变量sum
中。最后输出结果。
请注意,在此示例中,斐波那契数列的第一项被定义为0,第二项被定义为1。如果你希望斐波那契数列的第一项为1,第二项为1,可以修改初始化变量fib1
和fib2
为1和1。
希望这个解决方案对你有帮助。如果你有任何进一步的问题,请随时问我。
【相关推荐】