【项目活动1】斐波拉契数列第n项的值?
数学思想:第一项和第二项的值都为1,从第三项开始值为前两项的和。
方法一:迭代
迭代变量:f1和f2
迭代表达式:f1,f2=f2,f1+f2
计数器:i
迭代表达式运算过程:先运算后赋值,新值迭代旧值
def f(n):
f1=f2=1
for i in range(3,n+1):
f1,f2=f2,f1+f2
return f2
m=int(input("请输入需要计算的项数:"))
print("第",m,"项的值为:",f(m))
方法二:递归
通过项数变量n,不断调用自身f(n)这个函数,直到项数值为1结束。然后再逐层回归值。
def f(n):
if n==1 or n==2:
return 1
else:
return f(n-1)+f(n-2)
m=int(input("请输入需要计算的项数:"))
print("第",m,"项的值为:",f(m))
【项目活动2】两个正整数的最大公约数?
方法一:迭代
def gys(m,n):
while m%n!=0:
r=m%n
m=n
n=r
return n
x=int(input("请输入大的那个数:"))
y=int(input("请输入小的那个数:"))
print("最大公约数的值为:",gys(x,y))
方法二:递归
def gys(m,n):
if m%n==0:
return n
else:
return gys(n,m%n)
x=int(input("请输入大的那个数:"))
y=int(input("请输入小的那个数:"))
print("最大公约数的值为:",gys(x,y))