1、写一个函数,接收一个参数,用来返回这个函数的阶乘并输1*2*3*4*5
思路:
1.首先写一个函数,接受一个参数 def 函数名(参数):
2.需要返回值 在函数体内写 return 阶乘的变量名
3.阶乘:n*(n-1)*(n-2)*...*1
4.每次乘数减一,用for...range()循环,使变量每次减一
5.用sum*=i 累乘
6.最后返回sum 即为阶乘结果
源码:
def factorial(n):
sum = 1
for i in range(2, n + 1):
sum = sum * i
print(str(i-1) + '*', end='')
if i == n:
print(str(i))
return sum
ret = factorial(5)
print(ret)
运行结果:
2、写一个函数实现斐波那契数列 (1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377......) 要求:接收一个参数,返回一个存着等量值的列表
*********方法一**********
思路:
1.需要返回列表,先创建一个空列表
2.斐波那契数列,前两个数之和等于第三个数
3.需要用两个变量分别接收前两个数
4.然后用for循环,让另一个变量接收前两的值
5.因为第二次两数之和就相当于第二个数,第二个数就相当于第二次的第一个数
6.赋值:第二个变量的值赋值给第一个变量,和赋值给第二个变量
7.然后每次循环将和添加到列表中,最后打印列表
源码:
l = []
def fbnq(n):
a = 0
b = 1
for i in range(n):
c = a + b
a = b
b = c
l.append(b)
print(l)
fbnq(5)
运行结果:
***********第二种****************
每次执行移一位,因为下一次的时候,上一次的第三个数就相当于第二个数,第二个数就相当于第二次的第一个数
赋值:第二个变量的值赋值给第一个变量,和赋值给第二个变量,使用迭代如下:
源码:
l = [1, ]
def func(num, a=1, b=2):
if num < 2:
return
else:
l.append(b)
func(num - 1, b, a + b)
func(5)
运行结果: