我正在使用递归方法将数字转换为基数为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
答案 0 :(得分:1)
C ++不支持复杂的布尔表达式,如0<=num<7
(例如,Python就是这样)。您应该使用&&
运算符将其分解为复合表达式:
if (0 <= num && num < 7) { // Here
return to_string(num);
}