递归与循环

递归:函数调它用自己的过程。

递归与循环对比

        代码通过实现计算从1到输入n的时间来对比

 ​​​

时间结果对比
N的值循环时间递归时间
1000.060.03       
10000.420.46
100002.902.90
1000005.92//不工作

 由于时间主要浪费在打印输出上,所以对比并不强烈。但是当N的值达到100000时程序已经不能运行了。这是由于递归的调用方式造成的。递归的每次函数调用都会返回一次,当函数执行完毕后,控制权被传回上一级递归,而且程序按照逐级返回,不能跳级返回。递归中位于递归调用之前的语句按被调函数的顺序执行,位于递归调用之后的语句按照与背调函数相反的顺序执行。虽然每次递归都会创造自己的新变量,但是递归自己并不能储存拷贝,所以每次递归调用就相当于又从头开始执行函数的代码。

        递归就像这样

        递归就像这样,在程序中一层一层的打开,最后在逐层返回。这样在实际处理问题中就会造成很大麻烦。从这也可以看出,递归很类似于循环,除了递归的每次调用都需要创建变量。所以二者实际上可以替换。

 总结:

        可以使用循环的地方通常可以使用递归 ,二者各有用处,递归代码简洁清晰,但是运算效率较低,次数过多容易造成栈溢出等现象。所以虽然循环不能解决所有问题,但是循环速度快,结构简单。如果能简单使用循环解决问题,就尽量不使用递归。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值