你这不叫递归,是死循环调用,分析下你的算法
1、第一次调用reversal()时n=23,n/10=2,n>0,进入循环
2、循环内第一次调用reversal()时n=2,n/10=0,不进入循环,输出n%10 ,就是2
3、返回第一次调用的循环,此时n值没有改变,还是2(之前调用的reversal()不改变n的值),所有继续执行第2步
改法:
将while循环改成if判断即可
在第一层调用的时候得到n的结果为n==2,while判断的时候n永远是大于0的,
你的代码现在等效于while(1){.....},所以是死循环循环,n在传递的时候是值传递,并没有在递归的过程中修改改到n的值。可以修改为全局变量,或者传递指针。
while(n>0)这个肯定是死循环啊,将while改为if就可以了。