函数执行过程和递归函数练习题

函数执行过程和递归函数练习题

可以通过网页工具查看代码执行过程,链接如下:
函数的执行过程:
def foo1(b,b1=3):
print(“foo1 called”,b,b1)
return 1
def foo2(c):
print(“foo2 called”,c)
return foo3(c)
def foo3(d):
print(“foo3 called”,d)
return 3
def main():
print(“main called”)
foo1(100,101)
foo2(200)
return (“main ending”, foo1(1) + foo2(2) + foo3(3))
print(main())
斐波那契数列:
函数嵌套形式:{{{}{}}{{}{}}}
#F(0)=0, F(1)=1, F(n)=F(n-1) + F(n-2)
def fib(n):
return 1 if n < 2 else fib(n-1) + fib(n-2)
fib(5)
#F(0)=0, F(1)=1, F(n)=F(n-1) + F(n-2)
pre = 0
cur = 1
print(pre,cur,end=’ ‘)
def fib(n,pre = 0, cur = 1):
pre, cur = cur, pre + cur
print(cur, end = ‘ ‘)
if n == 2:
return
fib(n-1,pre,cur)
fib(5)
阶乘:
函数嵌套形式{{{{}}}}
def fac(n):
if n == 1:
return 1
return n * fac(n-1)
fac(5)
def fac(n, m = 1):
if n == 1:
return m
m *= n
return fac(n-1,m)
fac(5)
逆序打印数字:
将一个数字逆序放入列表中,例如1234 => [4,3,2,1]
nums = 12345789
def revert(nums, lst=[]):
x,y = divmod(nums, 10)
lst.append(y)
if x == 0:
return lst
return revert(x)
print(revert(nums))
strsample = “abcdef”
# nums = str(nums)
def revert(strsample, lst=[]):
if len(strsample) == 0:
return lst
lst.append(strsample[-1])
return revert(strsample[:len(strsample)-1],lst)
print(revert(strsample))
clipboard
解答:
y = x/2 – 1
def peach(n, x = 1):
if n == 1:
return x
x = 2 * (x + 1)
return peach(n-1, x)
print(peach(10))
def peach(days=1):
if days == 10:
return 1
num = (peach(days+1) + 1)*2
return num
print(peach())
def peach(days=10):
if days == 1:
return 1
return (peach(days-1) + 1)*2
print(peach())

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96399

(0)
JacoJaco
上一篇 2018-04-16 14:50
下一篇 2018-04-16 19:53

相关推荐

  • Python数据结构

    数据结构个人总结,方便以后查找。

    Python笔记 2018-04-01
  • 杨辉三角专题

    杨辉三角;二项式

    2018-04-09
  • Python 的描述器Descriptors

    Python 的描述器Descriptors

    Python笔记 2018-05-29
  • 文件IO常用操作

    io模块 StringIO BytesIO 类
    pathlib模块 路径操作 3.4版本开始
    os模块 更改权限、显示信息 3.4版本之前路径操作
    shuril 模块(高级文件操作
    csv 文件
    configparser模块 ini文件处理

    2018-05-02
  • python安装失败原因分析(未指定错误0x80072efd)

    python安装时间很长,最终报错未指定错误0x80072efd   原因分析: download dubugging symbols download debug binaries 这两项需要联网(外网),国内安装会超时报错。所以安装时取消这两项就可以安装成功      

    2018-08-09
  • 正则表达式

    正则表达式 分类 BRE:基本正则表达式,grep,sed,vi等软件支持,vim有扩展 ERE:扩展正则表达式,egrep,grep -E ,sed  r等 PCRE:几乎所有的高级语言都是PCRE的方言或则变种, 基本语法 元字符metacharater .  匹配除换行符外任意一个字符 [abc]字符集合,只能表示一个字符的位置,匹配所包含的任意一个字…

    Python笔记 2018-05-07