c - 如何使用数组获得斐波那契数列和数列之和?
问题描述
我尝试了一个 C 程序,它显示了斐波那契数列和数列之和,从用户那里获取 N 的值。这是给出的代码
#include <stdio.h>
int main()
{
int m[100],i,n,j;
printf("How many numbers? Enter : ");
scanf("%d",&n);
m[0]=0;
m[1]=1;
for(i=2; i<n; i++)
{
m[i] = m[i-1] + m[i-2];
}
printf("\n");
for(i=0; i<n; i++)
{
printf("%d ",m[i]);
}
for(j=2; j<n; j++)
{
m[j] = m[j-1] + m[j-2];
}
printf("\nSum is %d\n\n",m[j]);
return 0;
}
另外,我收到此错误消息:::
||=== Build: Debug in Array (compiler: GNU GCC Compiler) ===|
C:\MinGW\Array\main.c|23|fatal error: error writing to C:\Users\User\AppData\Local\Temp\ccemlrUr.s: No space left on device|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
解决方案
我不确定该错误(您的磁盘可能已满,正如已经建议的那样),它在我的机器上运行良好,但您的总和代码并不好。您可以尝试这样的事情,不需要额外的 sum 循环:
#include <stdio.h>
int main()
{
int m[100],i,n;
printf("How many numbers? Enter : ");
scanf("%d",&n);
m[0]= 0;
m[1]= 1;
int s = 1;
for(i=2; i<n; i++)
{
m[i] = m[i-1] + m[i-2];
s += m[i];
}
printf("\n");
for(i=0; i<n; i++)
{
printf("%d ",m[i]);
}
printf("\nSum is %d\n\n",s);
return 0;
}
PS,此代码不涵盖 n == 1 或 n == 0 的情况
推荐阅读
- perl - 使用 FROM perl 时如何使用 tar 解压缩 dockerfile 中的文件
- javascript - 如何从反应本机 Firestore onSnapshot 中获取准确数据,而不是从数组中获取数据?
- javascript - 打字不工作时在 React 功能组件上去抖动
- python - 最大二叉树(Leetcode)——最优解解释?
- c++ - 在 C++ 中查找和比较 Unicode 字符
- c++ - 请求 WebGL2 时,任何浏览器都会给我一个 WebGL1 上下文(emscripten)
- javascript - 如何在点击 Vue 时更改数据
- javascript - Compering undefined, null and values
- html - 右侧大文字推送到左侧图片
- javascript - 如何在 JavaScript 程序中使用startsWith?