我需要创建一个递归函数来查找两个数字之间的所有回文素数。诀窍是根本不使用任何循环或迭代。作为编程的初学者,我努力进行递归,并设法用循环编写程序:
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
我还在努力解决这些问题,任何帮助都会受到赞赏:)
答案 0 :(得分:0)
编写递归函数的一般方法:
对于返回true / false的函数,将有3个条件:您知道答案是真的,您知道答案是错误的,或者问题仍然太复杂。
以回文为例。如果第一个字符和最后一个字符不匹配,您就知道它是错误的。你知道如果字符串的长度是1或更小则是真的。由于您已经检查了第一个和最后一个字符,因此可以从字符串中删除这些字符以简化问题。