递归:Palindromic Primes

时间:2014-05-08 16:57:23

标签: python recursion primes palindrome

我需要创建一个递归函数来查找两个数字之间的所有回文素数。诀窍是根本不使用任何循环或迭代。作为编程的初学者,我努力进行递归,并设法用循环编写程序:

def palindrome(startpoint,endpoint):

    print("The palindromic numbers are:\n")
    num = ''
    inverted = ''
    for i in range(startpoint+1,endpoint):
        num = str(i)

        for j in range(len(num)-1, -1, -1):
            inverted += str(num[j])

        if (num == inverted):
            print(num)
        num = ''
        inverted = ''


def main():

    startpoint = eval(input("Enter the starting point N:\n"))
    endpoint = eval(input("Enter the ending point M::\n"))
    palindrome(startpoint,endpoint)

main()    

我一直试图递归写这个程序,但没有运气。

我是否首先将这些数字视为字符串并检查它们是否是这样的回文?

def palindrome (str):
   if str == "":
      return str
   else:
      return palindrome (str[1:]) + str[0]

然后检查这样的素数:

def prime(n):

if n%2 == 0:
    return False
else: 
    return True

我还在努力解决这些问题,任何帮助都会受到赞赏:)

1 个答案:

答案 0 :(得分:0)

编写递归函数的一般方法:

  • 处理简单案件。
  • 简化问题并再次给自己打电话。

对于返回true / false的函数,将有3个条件:您知道答案是真的,您知道答案是错误的,或者问题仍然太复杂。

以回文为例。如果第一个字符和最后一个字符不匹配,您就知道它是错误的。你知道如果字符串的长度是1或更小则是真的。由于您已经检查了第一个和最后一个字符,因此可以从字符串中删除这些字符以简化问题。