我尝试在不使用循环的情况下在c ++上反转整数。我以为我在这里有一个正确的主意,但是它并没有按照我的意愿工作。如果有人可以告诉我这里看起来有什么问题,将不胜感激
void reverse(int y){ //base
int a = y % 10;
int length = to_string(y).length();
cout << length << endl;//gets length of number
cout << reversed << endl;
reversed += a * (10 ^ (length - 1)); // add to reversed
y = y / 10;
if (y == 0){
cout << reversed << endl;
exit (0);
}
else { //recursive
reverse (y);
}
}
答案 0 :(得分:0)
正如其他人指出的那样,^不是幂运算符。例如,使用pow()。
这应该对您有用:
#include <iostream>
#include <cmath>
using namespace std;
int reversed;
void reverse(int y){ //base
int a = y % 10;
reversed += a * pow(10, to_string(y).length()-1); // add to reversed
y = y / 10;
//Condition, digit must be 1 number
if (y >= 10){
cout << reversed << endl;
reverse(y);
} else {
cout << reversed << endl;
reversed += y;
cout << reversed << endl;
}
}
int main() {
reverse(123456);
return 0;
}
输出:
600000
650000
654000
654300
654320
654321