递归(从2到n的2的偶数之和),例如:输入:n = 6,输出:2 + 4 + 6

时间:2018-10-12 03:43:45

标签: c++ recursion

任何人都可以修复此代码以使其正确吗?

我认为这几乎是正确的,但是最后一个数字是正确的数字,但后面是随机数字。

#include <iostream>
using namespace std;

int jumlah(int a, int b){
    if(a*2==b){
        cout<<b;
    }else{
        cout<<b<<"+";
        cout<<jumlah(a, b+2);
    }   
}

int main(){
    int a, b;
    b=2;
    cin>>a;
    jumlah(a, b);
    return 0;
}

2 个答案:

答案 0 :(得分:3)

您的代码具有未定义的行为,因为该函数不返回任何内容。

将其更改为:

int jumlah(int a, int b){

   if ( a*2 == b){
      return b;
   }

   cout << b << "+";
   return jumlah(a, b+2);
}

并将main中的呼叫更改为:

cout << jumlah(a, b);

答案 1 :(得分:3)

您的函数从不返回任何内容,因此打印递归结果是不确定的。

从函数中删除结果,然后递归而不打印。

void jumlah(int a, int b){
    if(a*2==b){
        cout<<b;
    }else{
        cout<<b<<"+";
        jumlah(a, b+2);
    }   
}