python-递归函数

递归,就是在运行的过程中调用自己。

递归必须要有三个要素:

①、边界条件

②、递归前进段

③、递归返回段

当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

递归经典的题目求解:

n的阶层问题的求解:

def recursive_func(num):
    """
    计算num的阶层:num*(num-1)*(num-2)....
    :param num: 输入一个数字
    :return:返回递归计算后的值
    """
    if num == 1:
        return 1
    elif num <= 0:
        print("输入错误")
    else:
        return num * recursive_func(num-1)


res = recursive_func(0)
print(res)

怎么样不要用递归去实现。。

def recursive_func_1(num):
    """
    不采用递归的方式进行计算num的阶层
    :param num: 一个数字
    :return: 返回递归的计算后的值
    """
    res = 1
    if num <= 0:
        print("输入错误")
    for i in range(1, num + 1):
        res *= i
    return res


res = recursive_func_1(5)  # 5 * 4 * 3 * 2 * 1
print(res) # 120

实现n个斐波那契数列

# 递归方式:
def fibonacci_sequence(n):
    """
    实现n个斐波那契数列
    :param n: 数字
    :return: 返回斐波那契数
    """
    if n == 1:
        return 1
    elif n == 2:
        return 1
    else:
        return fibonacci_sequence(n-1) + fibonacci_sequence(n-2)

ret = fibonacci_sequence(10)

res = [fibonacci_sequence(i) for i in range(1,10)]  # [1, 1, 2, 3, 5, 8, 13, 21, 34]
print(res)

# 不是递归的方法

def fibonacci_sequence_1(n):
    """
    计算n个斐波那契数列:
    :param n: 数字
    :return: 放回斐波那契数:
    """
    res = [1, 1]
    while n > 0:
        res.append(res[-1]+res[-2])
        n -= 1
    return res


ret = fibonacci_sequence_1(10)

print(ret)  # [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144]

转载于:https://www.cnblogs.com/yangchangjie150330/p/10556231.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值