Project Euler 2#-奇怪的输出
我曾尝试在C中解决Euler项目的问题2。这是我想到的第一个可能的解决方案,事实上,它作为输出给出了正确的答案。问题是,每次我运行程序时,它都会给我不同的输出,即“2”或“4613732”,这是正确的答案。对不起,我英语不好,你能帮我找出毛病吗Project Euler 2#-奇怪的输出,c,C,我曾尝试在C中解决Euler项目的问题2。这是我想到的第一个可能的解决方案,事实上,它作为输出给出了正确的答案。问题是,每次我运行程序时,它都会给我不同的输出,即“2”或“4613732”,这是正确的答案。对不起,我英语不好,你能帮我找出毛病吗 #include <stdio.h> int main(){ int n, n1 = 1, n2 = 2, sum = 2; while(n<4000000){ n = n1 + n2; /*calculate the
#include <stdio.h>
int main(){
int n, n1 = 1, n2 = 2, sum = 2;
while(n<4000000){
n = n1 + n2; /*calculate the next number of the series*/
n1 = n2;
n2 = n;
if(n%2 == 0){
sum = sum + n; /*if the number it's even add it to the main sum*/
}
}
printf("The sum is %d\n", sum);
}
#包括
int main(){
int n,n1=1,n2=2,和=2;
而(n你没有初始化n
;当你得到正确答案时,意味着你很幸运。你没有初始化n
;当你得到正确答案时,意味着你很幸运
#include <conio.h>
#include <iostream>
using namespace std;
int evenFibSum(int i=1,int j=2)
{
const int max = 3999999;
int eventsum = 2;
int sum = 0;
while (sum < max)
{
sum = i + j;
i = j;
j = sum;
if (sum % 2 == 0)
eventsum +=sum;
}
return eventsum;
}
为了得到均匀的fibbonanci加法,我必须添加以下索引值[1 4 7 10]
在这里,我感觉到一些模式
[1 4 7 10]=>我需要提前3个月进行索引
// k = i+j = > 3 13 55
// i = k+j => 5 21 89
// j = k+i => 8 34 144
int evenFibSumx(int i=1,int j=2)
{
const int max = 3999999;
int eventsum = 2;
int k= 0;
while (1)
{
k = i + j;
i = k + j;
j = k + i;
if(i >= max)
break;
if (j%2 == 0)
eventsum +=j;
}
return eventsum;
}
int main()
{
std::cout << evenFibSum();
std::cout << evenFibSumx();
}
那么,如何将指数提高3
// k = i+j = > 3 13 55
// i = k+j => 5 21 89
// j = k+i => 8 34 144
int evenFibSumx(int i=1,int j=2)
{
const int max = 3999999;
int eventsum = 2;
int k= 0;
while (1)
{
k = i + j;
i = k + j;
j = k + i;
if(i >= max)
break;
if (j%2 == 0)
eventsum +=j;
}
return eventsum;
}
int main()
{
std::cout << evenFibSum();
std::cout << evenFibSumx();
}
//k=i+j=>3 13 55
//i=k+j=>52189
//j=k+i=>834144
int-fibsumx(int i=1,int j=2)
{
常量int max=3999999;
int eventsum=2;
int k=0;
而(1)
{
k=i+j;
i=k+j;
j=k+i;
如果(i>=max)
打破
如果(j%2==0)
eventsum+=j;
}
返回事件总数;
}
int main()
{
标准::cout
为了得到均匀的fibbonanci加法,我必须添加以下索引值[1 4 7 10]
在这里,我感觉到一些模式
[1 4 7 10]=>我需要提前3个月进行索引
// k = i+j = > 3 13 55
// i = k+j => 5 21 89
// j = k+i => 8 34 144
int evenFibSumx(int i=1,int j=2)
{
const int max = 3999999;
int eventsum = 2;
int k= 0;
while (1)
{
k = i + j;
i = k + j;
j = k + i;
if(i >= max)
break;
if (j%2 == 0)
eventsum +=j;
}
return eventsum;
}
int main()
{
std::cout << evenFibSum();
std::cout << evenFibSumx();
}
那么,如何将指数提高3
// k = i+j = > 3 13 55
// i = k+j => 5 21 89
// j = k+i => 8 34 144
int evenFibSumx(int i=1,int j=2)
{
const int max = 3999999;
int eventsum = 2;
int k= 0;
while (1)
{
k = i + j;
i = k + j;
j = k + i;
if(i >= max)
break;
if (j%2 == 0)
eventsum +=j;
}
return eventsum;
}
int main()
{
std::cout << evenFibSum();
std::cout << evenFibSumx();
}
//k=i+j=>3 13 55
//i=k+j=>52189
//j=k+i=>834144
int-fibsumx(int i=1,int j=2)
{
常量int max=3999999;
int eventsum=2;
int k=0;
而(1)
{
k=i+j;
i=k+j;
j=k+i;
如果(i>=max)
打破
如果(j%2==0)
eventsum+=j;
}
返回事件总数;
}
int main()
{
std::cout因为您没有初始化n
,所以它可以从任何值开始。如果它从=4000000
值开始,那么循环不会运行,并且输出是2,因为您从sum=2
开始。这被称为。因为您没有初始化n
,所以它可以从任何值开始。如果它从=4开始000000
,则循环不运行,输出为2,因为您从sum=2
开始。这被称为。我明白了…这是一个愚蠢的错误,感谢您的帮助!我明白了…这是一个愚蠢的错误,感谢您的帮助!