python - 递归……我卡住了
问题描述
问题是这样的:
打印一个以 N 开头的数字序列,不使用循环,其中
A[i+1] = A[i] - 5,如果 A[i]>0,否则 A[i+1]=A[i] + 5 重复直到 A[i]=N
So for input = 16
output is 16 11 6 1 -4 1 6 11 16
input = 10
output is 10 5 0 5 10
我正在尝试分析解决方案,一旦数字变为负数,它是如何工作的。
这是解决方案:
def print_pattern(n):
print(n, end=' ')
if n > 0:
print_pattern(n - 5)
else:
return
print(n, end=' ')
T = int(input())
for case in range(T):
N = int(input())
print_pattern(N)
print()
解决方案
如上所述,这似乎是一个无限递归。对于输入 = 16:
16 -> 11 # A[i+1] = A[i] - 5 (> 0)
11 -> 6 # A[i+1] = A[i] - 5 (> 0)
6 -> 1 # A[i+1] = A[i] - 5 (> 0)
1 -> -4 # A[i+1] = A[i] - 5 (> 0)
-4 -> 1 # A[i+1] = A[i] + 5 (<= 0)
1 -> -4 # A[i+1] = A[i] - 5 (> 0)
-4 -> 1 # A[i+1] = A[i] + 5 (<= 0)
etc.
所以你永远不会得到"16 11 6 1 -4 1 6 11 16"
. 重新阅读您的问题并验证规则。
推荐阅读
- magento2 - 在送货地址中,我希望按城市计算运费,因为它们默认使用国家和邮政编码
- css - 将 SVG 路径设为 100% 宽度?
- reactjs - 使用 Webpack 构建后未定义窗口
- macos - MacOS 上的 CRM 控制台应用程序
- .net-core - EntityFrameworkCore 对存储过程的支持
- python - 在 sql.select 中提供条件作为第二个参数
- ruby-on-rails - Rails 击中错误的 url
- python - 具有大量组的 Python 中的 Anova 测试
- sql-server - 从两个连接运行数据的 SQL 查询 - Oracle 和 SQLServer 连接
- r - 如何处理R中一列中的多种类型的数据?