Python基于递归实现电话号码映射功能示例
本文实例讲述了Python基于递归实现电话号码映射功能。分享给大家供大家参考,具体如下:
问题
电话按键上面的每个数字都对应着几个字母,如果按下一个数字键代表输入一个字母,那么输入一个数字组成的字符串,它所产生的所有的可能的字母串是什么,有多少种
思路:
这个是一个递归的问题
下面是具体的实现,为了更清晰看懂递归调用的过程,这里打印出来了每一次递归的过程:
#!usr/bin/envpython #encoding:utf-8 ''''' __Author__:沂水寒城 功能:电话号码映射 ''' phone_dict={'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'} defphone_num_map(one_str,phone_dict): ''''' 电话号码映射 ''' res_list=[] deep(one_str,"",res_list) returnres_list defdeep(one_str,tmp_str,res_list): ''''' 递归的遍历过程 ''' ifnotone_str: res_list.append(tmp_str) return forcinphone_dict[one_str[0]]: deep(one_str[1:],tmp_str+c,res_list) print'deep({0},{1},{2})'.format(one_str[1:],tmp_str+c,res_list) if__name__=='__main__': one_str_list=['23','567','47','89','44'] forone_strinone_str_list: one_list=phone_num_map(one_str,phone_dict) printone_list printlen(one_list)
结果如下:
deep(,ad,['ad'])
deep(,ae,['ad','ae'])
deep(,af,['ad','ae','af'])
deep(3,a,['ad','ae','af'])
deep(,bd,['ad','ae','af','bd'])
deep(,be,['ad','ae','af','bd','be'])
deep(,bf,['ad','ae','af','bd','be','bf'])
deep(3,b,['ad','ae','af','bd','be','bf'])
deep(,cd,['ad','ae','af','bd','be','bf','cd'])
deep(,ce,['ad','ae','af','bd','be','bf','cd','ce'])
deep(,cf,['ad','ae','af','bd','be','bf','cd','ce','cf'])
deep(3,c,['ad','ae','af','bd','be','bf','cd','ce','cf'])
['ad','ae','af','bd','be','bf','cd','ce','cf']
9
deep(,jmp,['jmp'])
deep(,jmq,['jmp','jmq'])
deep(,jmr,['jmp','jmq','jmr'])
deep(,jms,['jmp','jmq','jmr','jms'])
deep(7,jm,['jmp','jmq','jmr','jms'])
deep(,jnp,['jmp','jmq','jmr','jms','jnp'])
deep(,jnq,['jmp','jmq','jmr','jms','jnp','jnq'])
deep(,jnr,['jmp','jmq','jmr','jms','jnp','jnq','jnr'])
deep(,jns,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns'])
deep(7,jn,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns'])
deep(,jop,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop'])
deep(,joq,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq'])
deep(,jor,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor'])
deep(,jos,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos'])
deep(7,jo,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos'])
deep(67,j,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos'])
deep(,kmp,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp'])
deep(,kmq,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq'])
deep(,kmr,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr'])
deep(,kms,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms'])
deep(7,km,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms'])
deep(,knp,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp'])
deep(,knq,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq'])
deep(,knr,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr'])
deep(,kns,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns'])
deep(7,kn,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns'])
deep(,kop,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop'])
deep(,koq,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq'])
deep(,kor,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor'])
deep(,kos,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos'])
deep(7,ko,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos'])
deep(67,k,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos'])
deep(,lmp,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos','lmp'])
deep(,lmq,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos','lmp','lmq'])
deep(,lmr,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos','lmp','lmq','lmr'])
deep(,lms,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos','lmp','lmq','lmr','lms'])
deep(7,lm,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos','lmp','lmq','lmr','lms'])
deep(,lnp,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos','lmp','lmq','lmr','lms','lnp'])
deep(,lnq,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos','lmp','lmq','lmr','lms','lnp','lnq'])
deep(,lnr,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos','lmp','lmq','lmr','lms','lnp','lnq','lnr'])
deep(,lns,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos','lmp','lmq','lmr','lms','lnp','lnq','lnr','lns'])
deep(7,ln,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos','lmp','lmq','lmr','lms','lnp','lnq','lnr','lns'])
deep(,lop,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos','lmp','lmq','lmr','lms','lnp','lnq','lnr','lns','lop'])
deep(,loq,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos','lmp','lmq','lmr','lms','lnp','lnq','lnr','lns','lop','loq'])
deep(,lor,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos','lmp','lmq','lmr','lms','lnp','lnq','lnr','lns','lop','loq','lor'])
deep(,los,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos','lmp','lmq','lmr','lms','lnp','lnq','lnr','lns','lop','loq','lor','los'])
deep(7,lo,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos','lmp','lmq','lmr','lms','lnp','lnq','lnr','lns','lop','loq','lor','los'])
deep(67,l,['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos','lmp','lmq','lmr','lms','lnp','lnq','lnr','lns','lop','loq','lor','los'])
['jmp','jmq','jmr','jms','jnp','jnq','jnr','jns','jop','joq','jor','jos','kmp','kmq','kmr','kms','knp','knq','knr','kns','kop','koq','kor','kos','lmp','lmq','lmr','lms','lnp','lnq','lnr','lns','lop','loq','lor','los']
36
deep(,gp,['gp'])
deep(,gq,['gp','gq'])
deep(,gr,['gp','gq','gr'])
deep(,gs,['gp','gq','gr','gs'])
deep(7,g,['gp','gq','gr','gs'])
deep(,hp,['gp','gq','gr','gs','hp'])
deep(,hq,['gp','gq','gr','gs','hp','hq'])
deep(,hr,['gp','gq','gr','gs','hp','hq','hr'])
deep(,hs,['gp','gq','gr','gs','hp','hq','hr','hs'])
deep(7,h,['gp','gq','gr','gs','hp','hq','hr','hs'])
deep(,ip,['gp','gq','gr','gs','hp','hq','hr','hs','ip'])
deep(,iq,['gp','gq','gr','gs','hp','hq','hr','hs','ip','iq'])
deep(,ir,['gp','gq','gr','gs','hp','hq','hr','hs','ip','iq','ir'])
deep(,is,['gp','gq','gr','gs','hp','hq','hr','hs','ip','iq','ir','is'])
deep(7,i,['gp','gq','gr','gs','hp','hq','hr','hs','ip','iq','ir','is'])
['gp','gq','gr','gs','hp','hq','hr','hs','ip','iq','ir','is']
12
deep(,tw,['tw'])
deep(,tx,['tw','tx'])
deep(,ty,['tw','tx','ty'])
deep(,tz,['tw','tx','ty','tz'])
deep(9,t,['tw','tx','ty','tz'])
deep(,uw,['tw','tx','ty','tz','uw'])
deep(,ux,['tw','tx','ty','tz','uw','ux'])
deep(,uy,['tw','tx','ty','tz','uw','ux','uy'])
deep(,uz,['tw','tx','ty','tz','uw','ux','uy','uz'])
deep(9,u,['tw','tx','ty','tz','uw','ux','uy','uz'])
deep(,vw,['tw','tx','ty','tz','uw','ux','uy','uz','vw'])
deep(,vx,['tw','tx','ty','tz','uw','ux','uy','uz','vw','vx'])
deep(,vy,['tw','tx','ty','tz','uw','ux','uy','uz','vw','vx','vy'])
deep(,vz,['tw','tx','ty','tz','uw','ux','uy','uz','vw','vx','vy','vz'])
deep(9,v,['tw','tx','ty','tz','uw','ux','uy','uz','vw','vx','vy','vz'])
['tw','tx','ty','tz','uw','ux','uy','uz','vw','vx','vy','vz']
12
deep(,gg,['gg'])
deep(,gh,['gg','gh'])
deep(,gi,['gg','gh','gi'])
deep(4,g,['gg','gh','gi'])
deep(,hg,['gg','gh','gi','hg'])
deep(,hh,['gg','gh','gi','hg','hh'])
deep(,hi,['gg','gh','gi','hg','hh','hi'])
deep(4,h,['gg','gh','gi','hg','hh','hi'])
deep(,ig,['gg','gh','gi','hg','hh','hi','ig'])
deep(,ih,['gg','gh','gi','hg','hh','hi','ig','ih'])
deep(,ii,['gg','gh','gi','hg','hh','hi','ig','ih','ii'])
deep(4,i,['gg','gh','gi','hg','hh','hi','ig','ih','ii'])
['gg','gh','gi','hg','hh','hi','ig','ih','ii']
9
[Finishedin0.4s]
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。