山不在高,有仙则名。水不在深,有龙则灵。
——csdn时时三省
什么是递归
程序调用自身的编程技巧称为递归。递归做为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的主要思考方式在于:把大事化小
就是函数自己调用自己就叫做递归
示例:
这就是最简单的一种递归
换成这个就可以看一下效果 输出的话就会一直打haha 因为main函数会调用自己 括号里面的main函数也要调用 就调用到了上面的main函数 就一直这样循环 每次调用自己都会打印一次haha
但这个代码是存在问题的 会栈溢出
示例:
这个就是一个递归代码
从main函数进来 num是0 要输入值 比如输入个123 然后到print函数 就要去调用print函数 这个时候n就等于123 n大于9就进到print里面去 print又要调用print这个时候123/10就等于12 然后继续上面的过程 知道n=1 就不会进入if语句了 也就是说递归不再继续了 直接打印n%10结果1这个函数用完以后从哪里来到哪里去 然后继续打印n%10的结果=2然后继续循环直到回到main函数里面 就结束了 打印出来就是 1 2 3
自己调用自己的时候后面的代码是没有机会执行的 直到执行完代码还会一层一层返回来