Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Project Euler 2#-奇怪的输出_C - Fatal编程技术网

Project Euler 2#-奇怪的输出

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

我曾尝试在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 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
开始。这被称为。我明白了…这是一个愚蠢的错误,感谢您的帮助!我明白了…这是一个愚蠢的错误,感谢您的帮助!