gpt4 book ai didi

c++ - 在 C++ 中使用递归方法反转整数

转载 作者:行者123 更新时间:2023-11-28 06:13:08 25 4
gpt4 key购买 nike

我有这个递归函数来反转正整数。任何人有一个有效的算法来使用更少的递归调用(但仍在使用递归)来完成任务,请在这里发帖!

int countDigit (const int & _X) {
if (_X < 10)
return 1;
return (countDigit(_X / 10) + 1);
}

int getPower (const int & _X, const int & _Y) {
if (_Y == 0)
return 1;
int ans = getPower(_X, _Y / 2);
if (_Y % 2)
return _X * ans * ans;
return ans * ans;
}

int reverseDigit (const int & digit) {
if (digit < 10) {
return digit;
}
int num = (digit % 10) * getPower(10, countDigit(digit / 10));
return num + reverseDigit(digit / 10);
}

最佳答案

当然......有效地从号码中读取数字并将它们添加到临时号码的末尾:

EDIT: Based on the questioner's bizarre modification of the question (to require recursion), I have edited my clean iterative solution to include an arbitrary amount of recursion, denoted by the positive integer [recurse].

int reverseDigit(int digit, int recurse=1) {
if (recurse>0) reverseDigit(digit,recurse-1);

int num=0;
while (digit!=0) {
num*=10;
num+=digit%10;
digit/=10;
}
return num;
}

关于c++ - 在 C++ 中使用递归方法反转整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30857397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com