【发布时间】:2014-04-18 05:15:09
【问题描述】:
我正在尝试编写一个递归函数,该函数将字符串和字符作为输入。该函数返回字符串中字符的第一个索引外观。如果字符未出现,则返回无。 我只有返回 None 才有问题。在我的情况下,当字符串中没有字符时,函数会抛出错误,有什么建议吗?
def char_first_index(s,c):
if len_rec(s)==0:
return None
if s[0]==c:
return 0
return 1+ char_first_index(s[1:],c)
【问题讨论】:
-
那个错误是...?另外,
len_rec是什么? -
TypeError: +: 'int' and 'NoneType' 的操作数类型不受支持
-
这是因为只有最后一次调用,即空字符串上的调用,才会返回
None。但是之前的所有调用都返回 1 + 一些东西。这会产生诸如1 + 1 + 1 + ... + None之类的东西。而且您不能将None添加到整数。恐怕您需要重新设计该功能。如果字符在字符串中,如何返回-float("Infinity"),这样用户可以检查值是否为< 0,或者返回1,并要求用户检查结果是否大于字符串的长度。总是返回相同类型的对象通常是个好主意。
标签: python python-3.x recursion