本题求x的n次方
如果把if(n==1)sum=x;
else
去掉,我输入n不等于1的数,为什么得不到答案
因为递归函数,必须要有递归出口。没有递归出口的话,就会无限循环而造成系统栈溢出。
这个递归出口也可以写为if(n==0)return 1;(并把if(n==1)sum=x;
else
去掉)
这个递归出口也可以写为if(n==0)return 1;(并把if(n==1)sum=x;
else
去掉)
温馨提示:答案为网友推荐,仅供参考
第1个回答 2018-11-12
递归递归,有递有归。
你不设置n=1时的递归返回条件,那当你n一直减到1后就不能运算下去了。
比方说n=3,x=2好了,
那mypow(2,3)=mypow(2,2)*2=(mypow(2,1)*2)*2
那么算到这里的时候问题来了,mypow(2,1)等于什么?
程序不知道,你要给它它才知道。追问
你不设置n=1时的递归返回条件,那当你n一直减到1后就不能运算下去了。
比方说n=3,x=2好了,
那mypow(2,3)=mypow(2,2)*2=(mypow(2,1)*2)*2
那么算到这里的时候问题来了,mypow(2,1)等于什么?
程序不知道,你要给它它才知道。追问
递归返回为什么没有 return ?
本回答被提问者采纳