Python新手如何实现带下角标An、Bn的递推序列循环计算
递推序列An、Bn的Python实现思路与修正代码
原有代码的问题汇总
- 语法错误:3行input语句末尾都缺少闭合的右括号
),运行会直接报错 - 逻辑错误:Python没有自带
a(n)这种带下标变量的语法,你写的a(n-1)会被识别为调用名为a的函数,未定义函数自然无法运行
实现方案
根据你的需求可以选择两种实现方式,你写的递推逻辑每一步只依赖前1项的结果,不需要额外实现复杂的下标映射逻辑:
场景1:只需要获取第N项的最终结果
如果不需要保留所有中间项的取值,直接用两个变量滚动存储上一步的结果即可,内存占用最低:
# 修正输入语法,补充闭合括号 a0 = int(input('enter a value:')) b0 = int(input('enter b value:')) N = int(input('enter N value:')) # 初始化上一步的取值为初始值a0、b0 a_prev = a0 b_prev = b0 for _ in range(N): # 基于上一步的值计算当前项 a_curr = a_prev + 10 b_curr = b_prev * 10 # 更新上一步的值为当前值,供下一轮循环使用 a_prev, b_prev = a_curr, b_curr # 循环结束后a_prev、b_prev就是第N项的An、Bn print(a_prev, b_prev)
场景2:需要保留所有中间项的取值
如果需要用到n=0到n=N所有项的取值,方便后续查询任意n的结果,就用列表存储所有历史值:
a0 = int(input('enter a value:')) b0 = int(input('enter b value:')) N = int(input('enter N value:')) # 初始化列表,第一个元素就是n=0的初始值 a_list = [a0] b_list = [b0] for n in range(1, N+1): # 取列表最后一个元素就是前一项的结果 a_curr = a_list[-1] + 10 b_curr = b_list[-1] * 10 a_list.append(a_curr) b_list.append(b_curr) # 要取第n项的话直接用a_list[n]、b_list[n]即可,比如取n=N的结果: print(a_list[N], b_list[N])
内容的提问来源于stack exchange,提问作者pleasebekind
相关产品推荐
相关产品推荐

