首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >递归…我被困住了

递归…我被困住了
EN

Stack Overflow用户
提问于 2019-04-06 15:32:51
回答 1查看 77关注 0票数 0

问题是:

打印以N开头的数字序列,而不使用循环,其中 Ai+1=Ai - 5,如果是Ai>0,则Ai+1=Ai+5重复它直到Ai=N

代码语言:javascript
运行
复制
So for input = 16 
output is 16 11 6 1 -4 1 6 11 16
input = 10 
output is 10 5 0 5 10

我正试图分析这个解决方案,一旦数字变为负数,它是如何工作的。

以下是解决办法:

代码语言:javascript
运行
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2019-04-06 18:15:17

如前所述,这似乎是一个无限递归。输入= 16:

代码语言:javascript
运行
复制
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"的输出。重读你的问题并验证规则。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55550631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档