2017-03-24 7 views
1

Ich verwende eine rekursive Methode, um eine Zahl in eine Darstellung in der Basis von 7 zu konvertieren. Jedoch, nachdem ich das Programm ausgeführt habe, ist die Ausgabezeichenfolge identisch mit der Eingabe-Nummer. Was hat den Grund, dass die Funktion nicht aufgerufen wird?rekursive Funktion nicht richtig aufgerufen

#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; 
} 

Der Ausgang ist:

Input: 100, Output: 100 

Antwort

1

C++ keine komplexen Booleschen Ausdruck wie 0<=num<7 unterstützt (wie beispielsweise Python tut). Sie sollten es auf einen zusammengesetzten Ausdruck mit einem && Operator zerlegen:

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

Das löst das Problem. Vielen Dank! – amyuh