用递归输出1~10

  1. 最常规的模板:正向输出1~10
    在这里插入图片描述
    输出结果:
    在这里插入图片描述
    这种写法是最常规的写法,出口只被调用一次,而前十次都是一直在执行 f (n-1)。直到第十一次,调用了第十一次。在程序栈中加上主函数,存在十二个栈,执行到第十二个,直接出口返回 0 。之后就执行输出语句。
    其实不难发现,递归也是一种循环,只不过for循环考虑初始条件,终止条件相较来说,较难考虑。 递归正好相反,它是一种逆向思维,不符合我们的思考习惯。

  2. 没有返回值正向输出1~10
    在这里插入图片描述
    输出结果:
    在这里插入图片描述
    解释这个递归把返回值去掉了,主要的特点是输出了0。是因为在判断0>0不成立的时候,只是终止调用函数了,但是输出语句还得执行,所以输出了0。 其实这个的判断最终的否定就是上个例子的出口。输出语句还是一样的,只是没有返回值了。

  3. 输出1~10
    在这里插入图片描述
    输出结果:
    在这里插入图片描述
    这个函数想要做的就是能不能我先做输出1,不想再做输出10了。这时候只用一个参数行不通,必须在函数中出现明确的10加以限制,那么这个函数就具有独特性了,这不是我们想要的。一般是加两个参数。

  4. 逆向输出1~10
    在这里插入图片描述
    很简单,把输出语句调到递归函数之前,让它在去的时候先把事情做了,而不是回来的时候再做事情。
    在这里插入图片描述

发布了73 篇原创文章 · 获赞 91 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_42512488/article/details/86725710