递归函数中,位于递归调用前、后的语句和各级被调用函数的执行顺序非常的诡异。
每一次函数调用都会有一次返回.当程序流执行到某一级递归的结尾处时,它会转移到前一级递归继续执行。 递归函数中,位于递归调用前的语句和各级被调用函数具有相同的执行顺序。 递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反。
这里涉及的函数的调用与返回机制,递归函数的压栈与出栈操作。函数调用一次必定要返回一次,何时返回?返回的形式有两种,一种是遇到return语句,一种是执行到函数的最底部。
直接看代码:
#include<stdio.h> #include<stdlib.h> void decToBin(int n) { if (n > 0) { decToBin(n / 2); printf(“%d “, n % 2); } } void main() { decToBin(13); system(“pause”); } //输出:1 1 0 1
printf(“%d “, n % 2);在整个程序中是一个什么样的执行顺序?
总结一下:
递归分为两个阶段:递推与递归(回归),递推时,递归函数前的代码被执行,回归时,递归函数后的代码被执行。
-End-
本文【递归函数例子有哪些_递归的案例】由作者: 递归 提供,本站不拥有所有权,只提供储存服务,如有侵权,联系删除!
本文链接:https://www.cuoshuo.com/blog/4161.html