递归函数调用不正确

时间:2017-03-24 17:14:19

标签: function c++11 recursion return data-conversion

我正在使用递归方法将数字转换为基数为7的表示。但是,在运行程序后,输出字符串与输入数字相同。导致该函数未被调用的原因是什么?

#include <iostream>
#include <string>
using namespace std;

string convertToBase7(int num) {
if(num<0) {
    string result;
    result = "-" + to_string(-num);
    return result;
}
if(0<=num<7){
    return to_string(num);
}
cout << "recursive" << endl;
return convertToBase7(num/7) + to_string(num%7);
}


int main() {
int input = 100;
string output = convertToBase7(input);
cout << "Input: " << input;
cout << ", Output: " << output << endl;
return 0;
}

输出结果为:

Input: 100, Output: 100

1 个答案:

答案 0 :(得分:1)

C ++不支持复杂的布尔表达式,如0<=num<7(例如,Python就是这样)。您应该使用&&运算符将其分解为复合表达式:

if (0 <= num && num < 7) { // Here
    return to_string(num);
}