【发布时间】:2018-01-12 13:00:14
【问题描述】:
我有一个任务来创建一个接收数字并返回反转数字的函数。
E.G:
Input : 12343
Output : 34321
不允许循环,输入只有数字。
这是我尝试过的:
long GetReverse(unsigned long n)
{
if (n < 10)
return n % 10;
else
return 10 * GetReverse(n / 10) + n % 10;
}
虽然这是重新调整我相同的输入而不是反转数字(我知道这里有什么问题,我只是想不出办法)
有什么想法吗?
编辑:这是我想出的解决方案:
int numOfMulti(unsigned long num) {
if (num < 10)
return 1;
return 10 * numOfMulti(num / 10);
}
long GetReverse(unsigned long n)
{
if (n < 10)
return n % 10;
else
return n % 10 * numOfMulti(n) + GetReverse(n / 10) ;
}
在没有辅助函数或静态变量的情况下无法找到解决方案。
【问题讨论】:
-
澄清一下,你不需要帮助来理解为什么会发生这种情况,只是为了帮助你想出一个合适的算法来得到正确的解决方案?
-
@Someprogrammerdude 没错..
-
铅笔。纸。尝试 10 到 100 之间的数字。调整算法。现在尝试一个介于 100 和 1000 之间的数字。适应.. 冲洗,重复。
-
...并考虑另一种数据结构。例如一串数字。
-
@sagi 你可以拥有多个功能吗?在这种情况下,让您的函数调用另一个带有两个参数的函数。