【问题标题】:invoking the recursive function in the general function在通用函数中调用递归函数
【发布时间】:2014-02-12 13:18:53
【问题描述】:

我正在从 Timothy A.Budd 的 (Exploring Python) 一书中学习 python

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

将整数转换为其等效字符串的程序也不处理 负数或零正确。这最容易通过创建一个 第二个函数将这些识别为特殊情况,然后调用 一般情况下的递归函数。编写第二个函数。为什么不能 当给定值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)

【问题讨论】:

    标签: python string function recursion


    【解决方案1】:

    如果函数为 0 返回“零”,那么 numToString(20) 将返回“二十零”,依此类推。

    【讨论】:

      【解决方案2】:

      可能跑题了,但你可以使用 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)
      

      【讨论】:

        猜你喜欢
        • 2023-04-03
        • 2015-09-12
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多