0
点赞
收藏
分享

微信扫一扫

LinuxC语言中的递归和循环


文章目录

  • ​​一、用阶乘的例子来解释递归思想和如何写递归​​
  • ​​1.递归的定义​​
  • ​​2.图 5.2. factorial(3)的调用过程的解释,理解了以后直接用即可!别用此方法证明递归正确性​​
  • ​​3.推断递归函数的正确性的方法​​
  • ​​4.递归总结​​
  • ​​5.写递归的练习​​
  • ​​二、循环迭代​​
  • ​​1.递归能解决的问题,循环也能解决​​
  • ​​2.递归思想(函数式编程)与循环思想(命令式编程)的对比​​
  • ​​3.将递归写成循环的习题​​

一、用阶乘的例子来解释递归思想和如何写递归

LinuxC语言中的递归和循环_递归


LinuxC语言中的递归和循环_递归函数_02

1.递归的定义

LinuxC语言中的递归和循环_递归函数_03

2.图 5.2. factorial(3)的调用过程的解释,理解了以后直接用即可!别用此方法证明递归正确性

LinuxC语言中的递归和循环_递归函数_04


LinuxC语言中的递归和循环_迭代_05


LinuxC语言中的递归和循环_递归_06

3.推断递归函数的正确性的方法

LinuxC语言中的递归和循环_迭代_07


LinuxC语言中的递归和循环_递归_08


LinuxC语言中的递归和循环_递归_09

4.递归总结

LinuxC语言中的递归和循环_递归_10


LinuxC语言中的递归和循环_递归_11

5.写递归的练习

LinuxC语言中的递归和循环_递归函数_12


LinuxC语言中的递归和循环_递归函数_13


说明:

  • 画红色框框内的是错误写法,一定要注意,不能这么写!!对比着图5.2去体会,重点是局部变量入栈和出栈的思想!!

二、循环迭代

1.递归能解决的问题,循环也能解决

(1)上面介绍了用递归求n!的方法,其实每次递归调用都在重复做同样一件事,就是把n乘到(n-1)!上然后把结果返回。

虽说是重复,但每次做都稍微有一点区别(n 的值不一样) ,这种每次都有一点区别的重复工作称为迭代(Iteration) 。

(2)虽然迭代用递归来做就够了,但C语言提供了循环语句使迭代程序写起来更方便。例如factorial 用 while 语句可以写成:

LinuxC语言中的递归和循环_递归函数_14


说明如下:

LinuxC语言中的递归和循环_迭代_15


LinuxC语言中的递归和循环_递归函数_16

2.递归思想(函数式编程)与循环思想(命令式编程)的对比

LinuxC语言中的递归和循环_递归函数_17

3.将递归写成循环的习题

LinuxC语言中的递归和循环_递归函数_18


LinuxC语言中的递归和循环_迭代_19


举报

相关推荐

0 条评论