python递归的应用 斐波那契数列

“”"
斐波那契数列
1 1 2 3 5 8 13…

青蛙上台阶
一次1个或者2个,跳到n个台阶,有多少种跳法

1 2 3 5 8

函数参数传递问题:
如果参数是基本类型:
属于值传递,在函数内部操作,不影响结果

如果参数是可变类型
    属于地址传递,在函数内部操作,源数据反生变化

“”"
def func(n):
if n == 1 or n == 2:
return 1
else:
return func(n-1)+func(n-2)

def func1(n):

if n == 1 or n == 2:

return 1

else:

return func1(n-1) + func1(n-2)

def func2(n):

list1 = [1,1]

if n == 1 or n == 2:

return 1

else:

for i in range(3,n+1):

list1.append(list1[-2]+list1[-1])

return list1[n-1]

def func3(n):

if n == 1 or n == 2:

return 1

else:

i = 3

a,b = 1,1

while i <= n:

c = a + b

a,b = b,c

i += 1

return c

print(func1(5))

print(func2(5))

print(func3(5))

print(func3(100))

print(func2(100))

print(func1(100))

函数的参数的使用问题

a = 10

# def func2(a):

# a += 10

def func2(b):

b += 10

func2(a)

print(a) # 10, 20

a,b = 10, 20

def swap(x,y):

x,y = y,x

print(f’交换前:a = {a} b = {b}’) # 10,20

swap(a,b)

print(f’交换后:a = {a} b = {b}’) # 10,20

list1 = [1,2]

def swap(list2):

list2[0],list2[1] = list2[1],list2[0]

print(f’交换前:{list1}’) #[1,2]

swap(list1)

print(f’交换后:{list1}’) #[]

你可能感兴趣的:(python3)