演示

  1. def run(n):
  2. if n>2:
  3. n-=1
  4. run(n)
  5. print(n)
  6. run(4)
  7. 2
  8. 2
  9. 3
  10. 运行流程:
  11. 1.进入run方法,判断n是大于2的,执行n-=1,此时n=3run(3)
  12. 2.n=3,执行run方法,判断n是大于2的,执行n-=1,此时n=2,run(2)
  13. 3.n=2执行run方法,判断n是小于2的,此时不会进入if,执行 print(n)
  14. 4.执行完 print(n),跳转调用处也就是第4行的run(n),拿到的n=2,再执行 print(n)
  15. 5.执行完 print(n),跳转调用处也就是第4行的run(n),拿到的n=3,再执行 print(n)

image.png

  1. def run(n):
  2. if n>2:
  3. n-=1
  4. run(n)
  5. else:
  6. print(n)
  7. run(4)
  8. 2
  9. 运行流程:
  10. 1.进入run方法,判断n是大于2的,执行n-=1,此时n=3run(3)
  11. 2.n=3,执行run方法,判断n是大于2的,执行n-=1,此时n=2,run(2)
  12. 3.n=2执行run方法,判断n是小于2的,此时不会进入if,进入 else执行 print(n)
  13. 4.执行完 print(n),跳转调用处也就是第4行的run(n),此时n=2,由于此时 print(n)在else里,所有不执行
  14. 5.接着的不执行,跳转调用处也就是第4行的run(n),此时n=3,由于此时 print(n)在else里,所有不执行

image.png

递归运算

  1. def mysum(n):
  2. if n > 0:
  3. return mysum(n - 1)+n
  4. else:
  5. return 0
  6. print(mysum(3))
  7. 6
  1. def jiecheng(n):
  2. result=0
  3. if n > 1:
  4. result = n * jiecheng(n - 1)
  5. return result
  6. else:
  7. return 1
  8. print(jiecheng(3))
  9. 6