递归练习

1、求阶乘

方法一:
s = 1
sum = 0
for i in range(1,3):
    s = s*i
    sum += s
print(s)
print(sum)

def fn(n):
    if n == 1:
        return 1
    else:
        return fn(n-1) * n
print(fn(3))

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

print(fn(3))



def fn1(n,a=1):
    if n == 1:
        return a
    a = a * n
    return fn1(n-1,a)
print(fn1(3))
def fac(n):
    if n < 3:
        return n
    return fac(n-1) * n
print(fn(3))

 

2、猴子吃桃

def foo(n=10):
    if n == 1:
        return 1
    return (foo(n-1) + 1) * 2

def foo(n=1):
    if n == 10:
        return 1
    return (foo(n + 1) + 1) * 2
    

 

def peach(days=9,p=1):
    p = 2 * (p + 1)
    return p if days == 1 else peach(days - 1,p)

print(peach())

 3、得到1234转换成[4,3,2,1]

list(map(int,reversed(str(1234))))
list(map(int,sorted(str(1234),reverse=True)))
x = str(1234)
target = []

def revert(data):
    if not data:
        return target
    target.append(int(data[-1]))
    return revert(data[:-1])
revert(x)

 

x = str(1234)

def revert(data,target = []):
    if not data:
        return target
    target.append(int(data[-1]))
    return revert(data[:-1],target)
revert(x)

 

posted @ 2020-04-20 21:26  Alrenn  阅读(96)  评论(0)    收藏  举报