递归说明(高斯求和、斐波那契、青蛙跳台阶的问题解决)

什么是递归?

  1. 在数学与见算计科学中,是指在函数的定义中使用函数自身的方法。
  2. 递归算法就是一种直接或者间接的调用自身函数或者方法的算法
  3. 递归算法的实质是把问题分解规模小的同类问题的子问题
  4. 然后调用自身方法来解

递归的基本原理

  1. 每一级的函数调用都有自己的变量
  2. 每一次函数调用都会有一次返回
  3. 递归函数中,位于递归调用前的语句和各级被调用函数具有相同的执行顺序
  4. 递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反
  5. 虽然每一级递归都有自己的变量,但是函数的代码不会得到复制

递归的优缺点

优点

  • 实现简单
  • 可读性好

缺点

  • 递归调用,占用空间大
  • 递归太深,容易发生栈溢出
  • 可能存在重复计算
  • 最大递归深度为 998,下文会解决最大递归深度

递归的三大要素

  1. 明确函数要做什么
  2. 寻找递归结束条件
  3. 找出函数的等价关系式

递归过程

python对递归的使用

解决最大递归深度

import sys

sys.setrecursionlimit(3000)

高斯求和

def count_number(n):
    if n <= 0:
        return 0
    return n + count_number(n-1)
  
def count_Number2(n):
  sum = 0
  for i in n:
    sum += i
  return sum

斐波那契

def fn(n):
  if n == 1:
    return 1
  else if n ==2:
    return 1
  else:
    return fn(n-1)+fn(n-2)

青蛙跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

fib = lambda n: n if n < 2 else 2 * fib(n - 1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值