- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在尝试在线性时间内实现斐波那契数列。每次运行程序时,我总是得到奇怪的结果。我是 C++ 的新手。
int fib1(int n) {
int arr[n];
arr[0] = 0;
arr[1] = 1;
for (int i = 2; i < n; i++) {
arr[i] = arr[i - 1] + arr[i - 2];
}
return arr[n];
}
int main() {
int x = fib1(3);
cout << x << endl;
return 0;
}
预期结果为:2
我得到的结果是:4199748
我哪里搞砸了?
最佳答案
如果arr
长度为 n
它没有索引为 n
的元素因此您正在越界访问 return arr[n]
中的数组.这会导致未定义的行为,任何事情都可能发生。你可能想要一个长度为 n+1
的数组迭代到 i <= n
.
此外,在标准 C++ 中,数组大小必须在编译时已知。因此变长数组arr[n]
之所以允许,是因为您的编译器对它有特殊支持。使用 std::vector
相反。
关于c++ - 每次都出乎意料的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57634520/
一直在断断续续做一个项目,2个月没碰了,今天回来,报错无法运行。 IEnumerable query = mediaTitleCollection.OfType(); 调试器在此行停止并给出标题中描述
我最近读了一篇 article关于生成变更日志,我想将其集成到 package.json 脚本中。 我用正确的项目名称稍微更改了文章中的脚本,并将输出导出到 CHANGELOG.md "script
我添加了这段代码,现在我得到了一个意想不到的标记";"错误。 代码: var i = 0; var tabs = ""; while(i "+ idArray[i] +" &nbs
@echo off for /f "tokens=1,2 delims=," %%x in (my.csv) do ( if %M% LSS %%x set M=%%x ) echo Max X Va
我正在尝试重命名我的 Room 数据库中的列。我傻傻的用了列名index,想改成id,但是这个迁移函数很头疼: static final Migration MIGRATION_2_3 = new M
我不确定这是否是一个错误。代码编译得很好(没有警告),但是当我输入一个方法时,本地值(NSMutableString)会在调试器中显示以下内容: __NSAutoreleaseFreedObject(
这个问题在这里已经有了答案: Synchronous/Asynchronous behaviour of python Pipes (1 个回答) 关闭4个月前。 我正在做一个从 udp 套接字接收样
我是一名优秀的程序员,十分优秀!