问题是:
打印以N开头的数字序列,而不使用循环,其中 Ai+1=Ai - 5,如果是Ai>0,则Ai+1=Ai+5重复它直到Ai=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()
发布于 2019-04-06 18:15:17
如前所述,这似乎是一个无限递归。输入= 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"
的输出。重读你的问题并验证规则。
https://stackoverflow.com/questions/55550631
复制相似问题