C ++递归打印反向整数

时间:2018-11-27 23:17:30

标签: c++ function recursion

我尝试在不使用循环的情况下在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);
   }
}

1 个答案:

答案 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