分享迭代实现斐波那契数列的代码(稍不同于教材)及注释,请多指教
本帖最后由 lzb1001 于 2023-6-16 16:34 编辑斐波那契数列的基本思想:从第三项开始每一项都等于前两项的和
'''
n :所经过的月数,实际上表示的是斐波那契数列的项数,因为在这个代码中,n的值代表求解斐波那契数列的第n项。
n1:表示斐波那契数列中的第(n-2)项---待确认!
n2:表示斐波那契数列中的第(n-1)项---待确认!
n3:表示斐波那契数列中的第n项---待确认!
'''
def fab(n):
n1 = 1 # 第1个月总对数为1
n2 = 1 # 第2个月总对数为1
n3 = 1 # 第3个月总对数默认初始值先为1,若无此行代码当fab(1)或fab(2)时会报错!
# 上面三行代码也可简写成n1 = n2 = n3 = 1
if n < 1: # 若输入的数值小于1(比如输入0毫无意义)
print('输入有误!') # 则报错,输出错误提示
return -1 # 注意此行缩进在if语句内!报错就返回-1(正常情况下是返回结果),可返回其他数值,但必须与倒数第5行if result == -1:的值对应?
while n >= 3: # 前两项已知,求第3项,所以数列至少有3项,也就是n >= 3,感觉这样写比教材上的(n - 2) > 0要好理解些 --- 请大神指教!
n3 = n1 + n2 # 等于左边两个月总对数的和---从头开始计算,依次递进!
n1 = n2 # ……?---(n - 2)从左往右递进!
n2 = n3 # ……?---(n - 1)从左往右递进!
n -= 1 # 循环次数减1---循环次数从多到少!
return n3 # 注意此行缩进在while循环体外!退出循环返回结果即最后一轮循环时n3的值
number = int(input('请输入月数:'))
result = fab(number) # result = -1 或 result = a3,取决于输入月数的值!
if result == -1:
print('输入有误!') # 则报错,输出错误提示
else:
#print('%d个月总共有%d对小兔子!' % (number, result))
print(f'{number}个月总共有{result}对小兔子!' ) 代码部分可以利用“<>”上传代码,像这样:
def fab(n):
n1 = 1 # 第1个月总对数为1
n2 = 1 # 第2个月总对数为1
n3 = 1 # 第3个月总对数默认初始值先为1,若无此行代码当fab(1)或fab(2)时会报错!
# 上面三行代码也可简写成n1 = n2 = n3 = 1
if n < 1: # 若输入的数值小于1(比如输入0毫无意义)
print('输入有误!') # 则报错,输出错误提示
return -1 # 注意此行缩进在if语句内!报错就返回-1(正常情况下是返回结果),可返回其他数值,但必须与倒数第5行if result == -1:的值对应?
while n >= 3: # 前两项已知,求第3项,所以数列至少有3项,也就是n >= 3,感觉这样写比教材上的(n - 2) > 0要好理解些 --- 请大神指教!
n3 = n1 + n2 # 等于左边两个月总对数的和---从头开始计算,依次递进!
n1 = n2 # ……?---(n - 2)从左往右递进!
n2 = n3 # ……?---(n - 1)从左往右递进!
n -= 1 # 循环次数减1---循环次数从多到少!
return n3 # 注意此行缩进在while循环体外!退出循环返回结果即最后一轮循环时n3的值
number = int(input('请输入月数:'))
result = fab(number) # result = -1 或 result = a3,取决于输入月数的值!
if result == -1:
print('输入有误!') # 则报错,输出错误提示
else:
#print('%d个月总共有%d对小兔子!' % (number, result))
print(f'{number}个月总共有{result}对小兔子!' ) yinda_peng 发表于 2023-6-23 10:05
代码部分可以利用“”上传代码,像这样:
收到
页:
[1]