首页 > 解决方案 > C++ 使用递归打印反转整数

问题描述

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

标签: c++functionrecursion

解决方案


正如其他人指出的那样 ^ 不是幂运算符。例如使用 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

推荐阅读