关于递归,无法理解!!
示例:
执行结果:
100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 7
4 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48
47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 1
3 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 9
3 94 95 96 97 98 99 100 请按任意键继续. . .
问题:为什么在递归后面的代码是在前面全部循环完毕后才开始执行?
<?php
$b=0;
function a($i){
global $b;
if(!$i){return;}
$a=$i;
echo $a,' ';
$i--;
a($i);//开始递归
$b++;
echo $b,' ';
}
a(100);
?>
执行结果:
100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 7
4 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48
47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 1
3 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 9
3 94 95 96 97 98 99 100 请按任意键继续. . .
问题:为什么在递归后面的代码是在前面全部循环完毕后才开始执行?
...全文
相关推荐
c代码-求阶乘n!!111
在这个名为“c代码-求阶乘n!!111”的项目中,我们可以推测它包含了一个C语言编写的程序,用于计算输入的正整数n的阶乘。
什么是递归算法:对递归的理解
递归算法是一种高级编程技术,其核心概念在于函数或方法直接或间接地调用自身来解决问题。在Java递归算法中,它遵循一个基本原则,即通过将大问题分解为规模较小、结构相同的子问题,然后逐层解决这些子问题,直
Python理解递归的方法总结
递归是编程中一种强大的概念,它涉及函数在其执行过程中调用自身,形成类似俄罗斯套娃的结构。理解递归有助于解决许多复杂问题,尤其是在数据结构和算法中。本文将深入探讨递归的不同类别,包括线性递归、二路递归和
理解递归-python
理解递归的关键在于掌握其基本原理、特点以及如何设计递归算法。1. 递归的基本认识: - 递归过程分为两部分:向下递推和向上回溯。
深入理解二叉树的非递归遍历
这种实现方式在某些场景下比递归更高效,因为它避免了系统调用的开销,特别是对于深度较大的树。然而,理解和实现非递归遍历通常需要更深入的思维和逻辑分析。


基础编程
