python实现递归的例子

本文通过实例详细讲解了如何使用Python递归函数来实现阶乘、斐波那契数列、二分查找以及汉诺塔问题。递归在解决这类问题时展现出强大的能力,让复杂问题变得简洁明了。
摘要由CSDN通过智能技术生成

用递归实现阶乘

def func(n):
    if n == 1:
        return 1
    else:
        return n * func(n-1)

用递归实现斐波那契数列

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

用递归实现二分查找

def b_sort(l, aim, start=0, end=None):
    if end == None: end = len(l)-1
    if start <= end:
        mid = (end-start) // 2 + start #保证每次都是相应的数列位置
        if aim < l[mid]:
            return b_sort(l, aim, start, mid-1)
        elif l[mid] < aim:
            return b_sort(l, aim, mid+1, end)
        else:
            return mid,aim
    else:
        print('您输入的值不存在!')

不用递归的二分查找

def binary_sort(l, aim, start=0, end=None):
    if end = None: end = len(l)-1
    while start<=end:
        mid = (end+start)//2 
        if aim < l[mid]:
            end = mid - 1
        elif l[mid] < aim:
            start = mid + 1
        else:
            return mid

用递归实现汉诺塔

def move(n, a, b, c):
    if n == 1:
        print('{}-->{}'.format(a,c))
        return
    move(n-1, a, c, b)  # 将汉诺塔看成最底下和其他两层,先将上面的移到B位置
    move(1, a, b, c)  # 将最底下的移到C位置
    move(n-1, b, a, c)  # 将上面的从B位置移到C位置   层层递归都是这样
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值