内容正文:
Python自定义和递归函数专题
班级 姓名
1.有如下python程序段:
def double_fac(m):
if m==1 or m==2:
return m
else:
return double_fac(m-2)*m
n=int(input("请输入一个正整数n:"))
sum=0
for m in range(1,n+1):
sum+=double_fac(m)
print(sum)
若输入n的值为5,则程序运行后,输出sum的值为( )
A.14 B.15 C.29 D.77
2.小明学习了算法后,写了以下两段代码来求斐波那契数列的第6项
下列说法正确的是( )
A.两种算法的时间复杂度均为O(1)
B.算法一是迭代算法,算法二是递归算法,相比之下,算法二的时间效率更高
C.执行算法二代码,f(4)共被调用了2次
D.执行算法一代码,当i=4这一遍循环刚结束时,a的值等于5
3.有如下两个Python程序段:
下列关于两个程序段的说法,正确的是( )
A.程序段1和程序段2的输出结果不相同
B.程序段1和程序段2都采用了递归算法
C.若问题规模为 n,程序段2的时间复杂度为O(n2)
D.程序段1中,①和②两方框处中的数字1同时修改为0,输出结果不变
4.丑数是指不能被2、3、5以外的质数整除的数。判断丑数的自定义函数程序如下:
def ugly(n):
for i in[2,3,5]:
while n%i==0:
n=n//i
return n==1
若调用执行自定义函数ugly(30),下列说法正确的是( )
A.函数返回值为False B.方框处程序应用了迭代算法
C.该程序的时间复杂度为0(n2) D.条件语句n%i=0执行了3次
5.将十进制正整数转化为二进制数,对应的python程序如下:
def toStr(n,base):
s="01"
if n<base:
return s[n]
else:
return
n=int(input("请输入正整数:"))
result=toStr(n,2)
print(result)
则代码中处的语句可为( )
A.toStr(n//base,base)+s[n%base] B.s[n%base]+toStr(n//base,base)
C.toStr(n%base,base)+s[n//base] D.s[n//base]+toStr(n%base,base)
6.有如下Python 程序段:
def sp(a,i):
if "a"<=a[i]<= "z":
a=a[:i]+a[i+1:]
elif "0"<=a[i]<= "9":
a=a[:i]+str((int(a[i])+3)%10)+a[i+1:]
return a
s="cfi3H8qwz4" ; i=0
while i<len(s):
s=sp(s,i)
i+=1
执行上述程序段后,s的值为( )
A.”f3H1w4” B.”3H84” C.”6H17” D.”f6H1w7”
7.Python 自定义函数中允许为参数设置默认值,调用函数时,缺省参数的值如果没有传入,则被认为是默认值。某Python自定义函数如下:
def px(a,x=1):
if x==0:
return a[0]
if a[x]>a[x-1]:
a[x],a[x-1]=a[x-1],a[x]
y=px(a,x-1)
return y
若数据d=[74,11,75,10,80,60,36,22],通过以下语句调用该函数后,结果正确的是( )
A.执行语句:ans=px(d) 变量 ans 的值:11 B.执行语句:ans=px(d,2) 变量