【递归】输出1~n

要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)

很不错!哈哈哈!多多感悟!

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

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

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

  4. 很簡单把输出语句调到递归函数之前,让它在去的时候先把事情做了而不是回来的时候再做事情。

我要回帖

 

随机推荐