c/c++ 关于递归函数的白痴问题

图片说明
为什么明明满足if()的条件要执行else的句子啊!
谢谢!

使用递归的时候,我觉着需要明白两点:(1)在一定条件下,递归函数是函数自己调用自己;
(2)在不满足(1)的情况下,退出对于自己的调用;
楼主上面的函数都实现了,是递归函数无疑;
你的疑问在“为什么满足条件的参数会打印invalid ”,这个是递归的作用,因为其最后退出的时候,
肯定是不满足 (x>=0)&&(x<=365) 条件的,所以打印 invalid number,不知道讲清楚么有?

答案是对的啊,并不知道你的问题在哪

把你的if判断语句改成(x>=0)&&(x<=365)试试

在func里加上
if(x==0){return 0;}
if(0<=x&&x<=365)改成
else if(0<x&&x<=365)

看if里面,当递归到第4次的时候,即执行func(0),0传进去之后仍然满足if条件,就进行下一次递归,这时候将执行func(-1),-1不满足if条件,所以执行了else,这就是执行else的原因。

你就不应该写else里面那个输出,没有意义,因为递归条件就是判断输入是否合法,不合法就跳出递归。所以else里面就直接return 0就行了,不要再cout了

递归需要有一个退出条件,而你这个递归的退出条件就是当x不满足if条件的时候,所以最后一次调用会不满足而退出,然后就打印了不满足的语句,然后开始了递归的返回过程

在最后的时候,肯定是不能满足if的条件的,所以会这样输出