c - 为什么我得到 s=-1807786450?
问题描述
斐波那契数列中的每个新项都是通过添加前两项来生成的。从 1 和 2 开始,前 10 个术语将是:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
通过考虑斐波那契数列中值不超过四百万的项,求偶数项之和。
#include<stdio.h>
#include<stdlib.h>
int main (void)
{
int a=0,b=1,c,s=0;
int i=1,f=0;
while(i<100000)
{
c=a+b;
if(c%2==0)
{
//printf("c=%ld \n",c);
s+=c;
//f++;
}
a=b;
b=c;
i++;
}
printf("s=%d ",s);
// printf("f=%ld",f);
}
解决方案
因为你没有初始化 a 和 b,所以它们包含垃圾。例如,如果您使 a =0 和 b = 0,您的 s 值将变为 0。
推荐阅读
- laravel - 如何在 laravel queue.php 中设置多个队列
- python - 编译 tf.keras 模型时可以使用哪些指标?
- python - 通过装饰器动态添加函数到类
- bash - 如何在 bash 中执行一个不是孩子并继续运行的应用程序?
- javascript - 带要求的动态变量
- .net - 来自前端 UI 的查询的微服务通信
- javascript - 为什么我的 Ajax 请求包含数据类型:“jsonp”错误?
- python - 相同数学运算的不同结果
- javascript - Javascript Fetch:错误 Unexpected token < in JSON at position 0
- phpstorm - Xdebug - PhpStorm 在其他进程上中断,但不是原始运行配置