递归函数二要素,分别对应if和else:算法思路很重要,否则理不清最小规模问题是什么?
1、确定递归函数的终止条件:即最小规模的问题中,其返回值应该是多少。
2、通过递归调用解决子问题,即随着递归的进行,最终会走到第一个要素条件:即去解决最小规模问题。
举例:
1、当问题规模的大小未知时,那最小规模问题即入参对象只有一个元素的时候。
2、编写一个程序递归判断一个字符串是否为回文。
回文是指从前往后读和从后往前读都一样的单词、短语、数字或其他字符序列。在本挑战中,空字符串也被视为回文。
递归是一种编程概念,涉及在函数的定义中调用自身。定义函数is_string_palindrome()
,参数为string;
在函数内部,实现递归,如果字符串是回文,则返回True
,否则返回False
def is_palindrome(s):
# 如果字符串长度小于2,那么它就是一个回文
if len(s) < 2:
return True
# 如果字符串的第一个和最后一个字符相同,那么去掉它们,然后对剩下的字符串递归调用这个函数
if s[0] == s[-1]:
return is_palindrome(s[1:-1])
# 如果字符串的第一个和最后一个字符不同,那么它就不是一个回文
else:
return False
# 测试函数
print(is_palindrome('racecar')) # True
print(is_palindrome('hello')) # False