Python 在通用函数中调用递归函数

Python 在通用函数中调用递归函数,python,string,function,recursion,Python,String,Function,Recursion,我正在为Timothy A.Budd学习(探索python)一书中的python 我的问题是本书第三章的第一个问题,关于定义函数: 将整数转换为其等效字符串的程序也不处理 负数或零是正确的。通过创建 第二个函数,将这些识别为特殊情况,然后调用 一般情况下的递归函数。编写第二个函数。为什么不能呢 递归函数在给定值0时返回“0” 将整数转换为等效字符串的程序如下: def numToString (num): if num==0: return '' elif num==1: ret

我正在为Timothy A.Budd学习(探索python)一书中的python

我的问题是本书第三章的第一个问题,关于定义函数:

将整数转换为其等效字符串的程序也不处理 负数或零是正确的。通过创建 第二个函数,将这些识别为特殊情况,然后调用 一般情况下的递归函数。编写第二个函数。为什么不能呢 递归函数在给定值0时返回“0”

将整数转换为等效字符串的程序如下:

def numToString (num):
    if num==0: return ''
    elif num==1: return ' one '
    elif num==2: return ' two '
    elif num==3: return ' three '
    elif num==4: return ' four '
    elif num==5: return ' five '
    elif num==6: return ' six '
    elif num==7: return ' seven '
    elif num==8: return ' eight '
    elif num==9: return ' nine '
    elif num==10: return ' ten '
    elif num==11: return ' eleven '
    elif num==12: return ' twelve '
    elif num==13: return ' therteen '
    elif num==14: return ' fourteen '
    elif num==15: return ' fifteen '
    elif num==16: return ' sixteen '
    elif num==17: return ' seventeen '
    elif num==18: return ' eighteen '
    elif num==19: return ' ninteen '
    elif num<=29: return ' twenty ' + numToString(num%10)
    elif num<=39: return ' thirty ' + numToString(num%10)
    elif num<=49: return ' fourty ' + numToString(num%10)
    elif num<=59: return ' fifty ' + numToString(num%10)
    elif num<=69: return ' sixty ' + numToString(num%10)
    elif num<=79: return ' seventy ' + numToString(num%10)
    elif num<=89: return ' eighty ' + numToString(num%10)
    elif num<=99: return ' ninty ' + numToString(num%10)
    elif num<=999: return numToString(num/100)+ ' hundred ' + numToString(num%100)
def numToString(num):
如果num==0:返回“”
elif num==1:返回“一”
elif num==2:返回'two'
elif num==3:返回“三”
elif num==4:返回'four'
elif num==5:返回“五”
elif num==6:返回'six'
elif num==7:返回'seven'
elif num==8:返回“八”
elif num==9:返回'nine'
elif num==10:返回“十”
elif num==11:返回“十一”
elif num==12:返回“十二”
elif num==13:返回“therteen”
elif num==14:返回“十四”
elif num==15:返回“十五”
elif num==16:返回“十六”
elif num==17:返回“十七”
elif num==18:返回“十八”
elif num==19:返回'ninten'

elif num如果函数为0返回'zero',则numToString(20)将返回'tworzero',依此类推。

可能与主题无关,但您可以使用dict(或本例中的列表)来减少代码:

def numToString (num):
    words=[
    '', ' one ', ' two ', ' three ', ' four ', ' five ', ' six ', ' seven ', ' eight ', ' nine ',
    ' ten ', ' eleven ', ' twelve ', ' therteen ', ' fourteen ', ' fifteen ', ' sixteen ', ' seventeen ', ' eighteen ', ' ninteen ']
    if num<20: return words[num]
    elif num<=29: return ' twenty ' + numToString(num%10)
    elif num<=39: return ' thirty ' + numToString(num%10)
    elif num<=49: return ' fourty ' + numToString(num%10)
    elif num<=59: return ' fifty ' + numToString(num%10)
    elif num<=69: return ' sixty ' + numToString(num%10)
    elif num<=79: return ' seventy ' + numToString(num%10)
    elif num<=89: return ' eighty ' + numToString(num%10)
    elif num<=99: return ' ninty ' + numToString(num%10)
    elif num<=999: return numToString(num/100)+ ' hundred ' + numToString(num%100)
def numToString(num):
言语=[
“‘一’、‘二’、‘三’、‘四’、‘五’、‘六’、‘七’、‘八’、‘九’”,
‘十’、‘十一’、‘十二’、‘十岁’、‘十四’、‘十五’、‘十六’、‘十七’、‘十八’、‘九岁’]
如果num