1 python表达式内部结构设计
python表达式能透过输入、输入、初始化其它表达式的形式与外部展开通讯。
python表达式内部结构设计时,采用return和气门模块做为输入,更容易认知和保护。
2 python递回表达式
python表达式外部间接或间接地初始化这类的表达式,称作递回表达式。一般来说用作结点未明的内部结构。
python递回表达式前提:
(1) 每一次初始化他们时,更吻合于表达式结论;
(2) 有两个中止表达式处置的前提;

2.1 python递回请降
描述
python能透过内置表达式sum()请降,也能透过递回表达式请降。
递回请降:如果对象为空则中止请降,否则每次取剩余项的第1项与前面项相加。
示例
>>>defdirt_recsum(L):ifnotL:return0#中止前提returnL[0]+dirt_recsum(L[1:])#间接初始化这类;每次初始化吻合表达式结论>>>defindirt_recsum(L):ifnotL:return0returnnonempty(L)#间接地初始化这类>>>defnonempty(L):returnL[0]+indirt_recsum(L[1:])>>>L=[6,7,8,9,10]>>>dirt_recsum(L)40>>>indirt_recsum(L)40#内置请降sum()表达式>>>sum(L)40
2.2 python非递回请降
示例
>>>defnonrecsum1(L):#不支持字符串列表return0ifnotLelseL[0]+nonrecsum1(L[1:])>>>defnonrecsum2(L):#不支持空序列returnL[0] iflen(L)==1elseL[0]+nonrecsum2(L[1:])>>>defnonrecsum3(L):#不支持空序列first,*rest=Lreturnfirstifnotrestelsefirst+nonrecsum3(rest)>>>L=[6,7,8,9,10]>>>nonrecsum1(L)40>>>nonrecsum2(L)40>>>nonrecsum3(L)40>>>nonrecsum1([])0#不支持空序列>>>nonrecsum2([])Traceback (mostrecentcalllast):File“<pyshell#51>”, line1, in<module>nonrecsum2([])File“<pyshell#42>”, line2, innonrecsum2returnL[0] iflen(L)==1elseL[0]+nonrecsum2(L[1:])IndexError: listindexoutofrange#不支持空序列>>>nonrecsum3([])Traceback (mostrecentcalllast):File“<pyshell#52>”, line1, in<module>nonrecsum3([])File“<pyshell#44>”, line2, innonrecsum3first,*rest=LValueError: notenoughvaluestounpack (expectedatleast1, got0)>>>SL=list(梯阅线条)>>>SL[梯, 阅, 线, 条]#不支持字符串列表>>>nonrecsum1(SL)Traceback (mostrecentcalllast):File“<pyshell#57>”, line1, in<module>nonrecsum1(SL)File“<pyshell#40>”, line2, innonrecsum1return0ifnotLelseL[0]+nonrecsum1(L[1:])File“<pyshell#40>”, line2, innonrecsum1return0ifnotLelseL[0]+nonrecsum1(L[1:])File“<pyshell#40>”, line2, innonrecsum1return0ifnotLelseL[0]+nonrecsum1(L[1:]) [Previouslinerepeated1moretime]TypeError: canonlyconcatenatestr (not“int”) tostr>>>nonrecsum2(SL)梯阅线条>>>nonrecsum3(SL)梯阅线条
2.3 python递回任意嵌套
python递回表达式能结点任意内部结构的嵌套。
示例
>>>defrecsumtree(L):total=0forxinL:ifnotisinstance(x,list):total+=xelse:total+=recsumtree(x)returntotal>>>L=[1 , [2, [ 3, 4] , 5] , 6, [7 , 8]]>>>recsumtree(L)36

举报/反馈