【发布时间】:2018-10-21 22:34:36
【问题描述】:
我需要通过递归来解决这个问题,这是他们要求做的: 编写一个递归函数,它接受一个正数并从右到左返回其数字的总和(+,-),像这样(例如):数字是 56894,总和是 4-9+8-6+ 5=2。 再比如,数字是7762348,和是8-4+3-2+6-7+7=11。
我下面的解决方案是否正确?我尝试用很多数字编译它,它似乎是正确的,但需要确定。
这是我的递归解决方案:
int func(int num){
if(num/10 ==0)
return num;
return (num%10) - func(num/10);
}
【问题讨论】:
-
如果它在纸上工作,在代码测试中工作包括角/边缘情况,并且不调用未定义的行为,它可能是正确的。无论如何,要求评论的“工作”代码属于codereview.stackexchange.com,而不是这里。
-
这被标记为 [tail-recursion] - 有问题的代码不使用尾调用
-
代码也适用于
func(0),因此可能扩展到“采用非负数数的函数”。