Convert a non-negative integer to its english words representation. Given input is guaranteed to be less than 231 - 1.
1 主要分以下情况讨论:
当n在1和19之间,直接输出结果
当n在20到99之间,因为个位数已经在第一种情况讨论了,所以只需要recursive 调用函数就行,所以需要考虑20,30,40,50,60,70,80,90这种整数的情况
当n在100到999之间时,需要用n/100得到百位上的数,加上‘hundred’,再加上十位和个位的数,十位和个位的可以继续调用recursive函数
当n>=1000时,有三种情况:thousand,million, billion:
thousand: 1,000到999,999
million:1,000,000到999,999,999
billion:大于1,000,000,000
比如是thousand级别的,需要除以1000,得到的商调用recursive函数,得到的余数调用recursive函数
对于million级别的,需要首先除以1,000,000,得到的商调用recursive函数,得到的余数可以继续调用recursive函数进行thousand级别处理(因为之前已经写了,所以直接recursive就ok)
同理,对于billion级别的也是一样
2 所以遇到这种,就采用recursive的方法,一步一步从最简单的处理,后面的直接调用前面的就ok
3 因为都是三位数的操作,所以1到999,需要最先处理
4 注意首字母要大写
5 word(n%10)这是调用函数,我之前写成中括号了
6 这里不需要-1了,因为直接把数输入进去,里面会自动处理好index的
7 太多小细节了,要写成to19[n-1:n]不能写成to19[n-1],因为后面如果n%10或者n%100等于0的时候,调用这个会返回nineteen,因为to19[-1]就是最后一个元素;['Hundred']和[to19[n/100-1]]要用中括号括起来,因为是list之间的相加,如果不用[],将是string之间的相加,就变成一长串字符了,后面不好join;把n写成num,直接全乱套
要注意空格和整数的时候(20,100,1000,10000)
要注意加空格