【问题标题】:Generate a sequence using Recursion in Python [duplicate]在 Python 中使用递归生成序列 [重复]
【发布时间】:2019-10-18 13:55:48
【问题描述】:

我想将一个函数定义为 f(a,b) 以便它生成一个序列: 10,8,6,4,2,0,2,4,6,8,10 如果 a=10 和 b=2 使用递归。

def pattern(a,b):
    if a-b < 0:    
        print(a)
        return pattern(a+b,b)
        print(a)
    else:
        print(a)
        return pattern(a-b,b)

我得到的结果是

10
8
6
4
2
0
2
0
2
0
.....  infinity

...但这是错误的。

【问题讨论】:

    标签: python function recursion


    【解决方案1】:

    你只需要使用递归

    from __future__ import print_function
    def psearch(a,b):
      if a > 0:
        print(a,end = ',')
        psearch(a - b,b)
        print(',',end="")
        print(a,end = "")
      else:
        print(a,end="")
    
    psearch(12,5)
    print()
    

    输出

    12,7,2,-3,2,7,12 
    

    【讨论】:

    • 2 个问题:例如 psearch(12,5) 应该给我 12,7,2,-3,2,7,12 但给我 12,7,2,2,7,12 和接近尾声“无”被打印出来,这不应该是这种情况。
    • @MirMuhammadMurtaza 不,它给出了你所说的输出12 7 2 -3 2 7 12。我现在才验证。
    • @MirMuhammadMurtaza 我的程序最后没有生成任何内容。这是因为您正在打印您的函数pattern() 该函数有None 返回值
    • 12, 7, 2, -3, 2, 7, 12,.第一点是我的错误。但是当我将打印中的参数用作 end=', ' 时,末尾有一个逗号。我需要逗号,但不是最后。有没有办法做到这一点?
    • @MirMuhammadMurtaza 我已经编辑了答案以添加逗号而不是空格。
    猜你喜欢
    • 2014-11-29
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 2022-08-12
    • 2017-06-26
    • 1970-01-01
    相关资源
    最近更新 更多