内容正文:
专题06 自定义函数、递归
1.【2023年1月浙江省选考真题信息技术第11题】定义如下函数:
def rf(n):
if n < 3:
return n
return rf(n-1)+rf(n-3)
执行语句v = rf(5),函数rf被调用的次数是
A.1 B.5 C.7 D.15
2.【2023年2月名校协作体高三信息技术第10题】有如下Python程序段:
def f(n):
if n < 2:
return 0
elif n % 2 ==0:
return n + f(n-2)
else:
return f(n-1)
n = int(input())
print(f(n))
若输入n的值为101,则程序运行后,输出的内容为
A.100
B.2500
C.2550
D.5050
3. 【2023年2月浙南联盟高三信息技术第11题】阅读以下程序:
def f(x):
if x>5 or x<1:
return '无法计算'
elif x==5:
return 1
else:
return (f(x+1)+1)*2
若输入的x为2,则函数返回值为( )
A. 22 B. 10 C. 11 D. '无法计算'
4.【2023年2月强基联盟高三信息技术第11题】 斐波那契数列:1,1,2,3,5,8,13,……,现用递归算法求解第 n 项,代码如下,
def fib(n):
if (n > 2) : return fib(n - 1) + fib(n - 2)
return 1
n = int(input('输入一个整数'))
print(fib(n))
程序执行时,输入一个整数5,则函数 fib 被第 3 次调用时的返回值为( )
A. 2 B. 3 C. 5 D. 8
5. 【2023年3月金丽衢12校(七彩阳光)信息技术第11题】定义函数isPalidrome用于判断回文字符串:
def isPalidrome(s):
if len(s)<=1:
return True
elif s[0]!=s[len(s)-1]:
return False
else:
return
已知代码划线处可选语句为:
①isPalidrome(s[1:-1])
②isPalidrome(s[2:-1])
③isPalidrome(s[1:len(s)-1])
④isPalidrome(s[2:len(s)-1]),则可填入的语句是
A.②或③ B.③或④ C.①或② D.①或③
6. 【2023年3月宁波十校信息技术第12题】已知:任取两个自然数,其互质(没有大于1的共同因数)的概率是。小蓝据此编写了程序:
from math import sqrt
from random import randint
def fun(a, b):
if b == 0:
return a
else:
return fun(b, a % b)
cnt = 0
n=1000; m=100000
for i in range(n):
a = randint(1, m)
b = randint(1, m)
if fun(a, b) == 1:
cnt += 1
print(sqrt(6 * n / cnt))
程序用频率估计概率,以验证该结论的准确性,则以下说法正确的是
A. 程序输出结果就是的近似值
B. 该程序所描述算法的时间复杂度为O(n)
C. 函数fun()用递归算法求两个正整数的最小公倍数
D. 要想提高程序结果的精确度,可以扩大n和m的范围
7.【2023年3月杭州周边重点中学联考信息技术第10题】 有如下Python程序段:
#程序段1
def fac(n):
s = 1
for i in range(1,n+1):
s = s*i
return s
print(fac(5))
#程序段2
def fac(n):
if n == 1:
return 1
else:
return n * fac(n - 1) #①
print(fac(5))
下列关于两个程序段的说法,正确的是( )
A. 程序1和程序2都使用了递归算法
B. 若问题规模为n,程序1和程序2的时间复