(一) 写一个函数,接收一个参数,用来返回这个函数的阶乘并输出
def factorial(n):
if n == 1:
return 1
return factorial(n-1) * n
n = int(input('计算几的阶乘呢?请输入:\n'))
result = factorial(n)
print('结果是:', result)
结果:
计算几的阶乘呢?请输入:
5
结果是: 120
(二)写一个函数实现斐波那契数列
(1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377......)
要求:接收一个参数,返回一个存着等量值的列表
(1)带 第一个1的版本(效率最好):
def fib(max):
n, a, b = 0, 0, 1
while n < max:
a, b = b, a + b
n = n + 1
print(a, end=' ')
num = int(input('想要几个斐波那契数?请输入:'))
fib(num)
结果:
(二)不带第一个 1 的版本(效率最低):
def func(n):
if n == 1:
return 1
elif n == 2:
return 2
else:
return func(n-2) + func(n-1)
count = int(input('想要几个菲波那切数?请输入:\n'))
a = 1
while a <= count:
print(func(a), end=' ')
a += 1
结果:
想要几个菲波那切数?请输入:
10
1 2 3 5 8 13 21 34 55 89
其他方法(添加到列表,再输出):
lst = [1, ]
def func(num, a=1, b=2):
if num < 2:
return
else:
lst.append(b)
func(num - 1, b, a + b)
func(5)
print(lst)