问题如下:
在不使用循环的情况下,打印以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()
答案 0 :(得分:0)
如上所述,这似乎是无限递归。对于输入= 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"
的输出。重新阅读您的问题并验证规则。