我怎样才能修正这个错误呢?
How could I fix the error?
本文关键字:错误 更新时间:2023-10-16
我尝试进行以下代码,但结果是分割故障(核心转储)。我该如何修复这个错误?另外,我的代码会产生100的斐波那契级数吗?我的代码如下:
#include <iostream>
using namespace std;
int fib(int);
int main()
{
int n;
int result[100];
for (int i=0;i<100;i++){
result[i] = fib(i);
} for (int i=0;i<100;i++){
cout << i+ 1 << " : " << result[i] << endl;
}
}
int fib(int n){
int re;
if (n==0||n==1){
re = 1;
} else{
re = fib(n)*fib(n - 1);
}
return re;
}
Fibonacci-orial h1> 整数上的斐波那契数列F(n)定义如下:
1. F(1) = 1
2. F(2) = 1
3. F(n) = F(n-1) + F(n-2), where n is an integer and n > 2
1. F(1) = 1
2. F(2) = 1
3. F(n) = F(n-1) + F(n-2), where n is an integer and n > 2
正整数的斐波那契数列是[F(1), F(2),…]的乘积F (n)] .
20
n Fibonacci-orial of n
1 1
2 1
3 2
4 6
5 30
6 240
7 3120
8 65520
9 2227680
10 122522400
11 10904493600
12 1570247078400
13 365867569267200
14 137932073613734400
15 84138564904377984000
16 83044763560621070208000
17 132622487406311849122176000
18 342696507457909818131702784000
19 1432814097681520949608649339904000
20 9692987370815489224102512784450560000
修改行:
re = fib(n)*fib(n - 1);
re = n * fib(n - 1);
,否则你将陷入无限循环。
关于前100个阶乘数的计算,是的,您的代码可以计算它们,但结果将不适合int
变量。要了解更多信息,在SO中有多个关于计算大数的阶乘的答案:1,2,3。
您应该更改行Re = fib(n) * fib(n - 1);
成:Re = fib(n-2) + fib(n- 1);
我认为,fibonacci是用加法计算的-通过调用fib(n-2)而不是fib(n),你删除了无穷无尽的递归函数调用-我认为,它匹配fibonacci的正确算法。
int main()
{
int n;
int result[100];
int iPrevResult = 1;
for (int i=0;i<100;i++)
{
iPrevResult = iPrevResult* fib(i);
result[i] = iPrevResult;
}
for (int i=1;i<100;i++)
{
cout << i+ 1 << " : " << result[i] << endl;
}
}
int fib(int n){
if (n<=1){
return 1;
}
return (fib(n-1) +fib(n-2));
}
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'