关于对递归的新的理解

一切问题都可以用递归来解释。

python解决an问题。

def compute(a,n):
    if n == 0:
        return 1
    if n < 0:
        return 1/a*compute(a,n+1)
    elif n > 0:
        return a*compute(a,n-1)

Python解决列表排序问题,假设这个列表前n-1项已经排序完成,我们只要解决最后一次的排序和特殊情况只有一个元素的列表的排列。

mylist = [16,32,31,14,5,1.1]
def listsort(mylist, length):
    if length==1:
        return mylist
    listsort(mylist, length - 1)               #n-1项已经计算结束,我们只考虑第n项
    k=mylist[length - 1]                       #取出最后一个的值
    i= length - 2                              #找列表下标,倒数第二个
    while(i>=0):                               #从倒数第二个开始一直遍历到0,假设前n-1已经排好序
        if mylist[i] > k:                      #如果最后一个数大于K,后移一位,然后再与下一个比较
            mylist[i+1]=mylist[i]
        else:
            mylist[i+1]=k
            break
        i-=1                                   #从后往前找下一个

    if -1 == i:                                #如果k比任何一个数都小,则最后一个并不会被修改,只是往后移
        mylist[0]=k                            #需要把k给第一位
    return mylist
print(listsort(mylist,len(mylist)))

字符串反转

string = "my name is jack!"
def reverse(string):
    if string == "" :
        return string
    else:
        print(string[-1],end="")
        reverse(string[0:len(string)-1])  
reverse(string)

我的理解:对于任何问题,只要可以拆开,拆成数学里的归纳法a1=1,假设an-1=1,所以an=1

我们只要考虑主要问题,次要问题不需要去花时间讨论,机器已经做好了。

posted @ 2022-03-30 22:04  15号计划  阅读(46)  评论(0)    收藏  举报