计蒜客蓝桥杯训练营练习题python代码 四、函数的递归调用

四、函数的递归调用

1. 斐波那契数列改进

n,a,b,p=list(map(int,input().split()))
f=[0]*105
f[1]=f[2]=1

def fibo(n):
    if f[n]==0:
        f[n]=(a*fibo(n-1)+b*fibo(n-2))%p
    return f[n]
print(fibo(n)%p)

2. 递归函数III

x=int(input())

def f(x):
    if x<=0:
        return 0
    elif x==1:
        return 1
    elif x%2==0:
        return 3*f(x/2)-1
    elif x %2==1:
        return 3*f((x+1)/2)-1
print(f(x))

3. 阿克曼函数

m,n=list(map(int,input().split()))

def f(m,n):
    if m==0:
        return n+1
    elif n==0:
        return f(m-1,1)
    return f(m-1,f(m,n-1))
print(f(m,n))

4. 字符串弱等于

a=input()
b=input()

def check(a,b):
    if a==b:
        return True
    length=len(a)
    if length!=len(b) or length%2!=0:
        return False
    
    a1=a[0:length//2]
    a2=a[length//2:length]
    b1=b[0:length//2]
    b2=b[length//2:length]
    if check(a1,b1) and check(a2,b2):
        return True
    if check(a1,b2) and check(a2,b1):
        return True
    return False

res=check(a,b)
if res:
    print('YES')
else:
    print('NO')

发布了8 篇原创文章 · 获赞 0 · 访问量 31

猜你喜欢

转载自blog.csdn.net/weixin_43755257/article/details/105183819