实验九 自定义函数及其调用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
def main(): for i in range(1,21): print(fibonacci(i))
main()
16. 用递归算法求正整数的各位数字之和。提示:
def sum1(m): s=0 if m<10: s=m else: s=m%10+sum1(m//10) return s
print(sum1(12345789)) 17. 输入并执行下列程序,理解变量的作用域。
s=0 if n==1:
return 1 else:
return n+sum1(n-1) print(sum1(100)) 13. 用递归方法求正整数 n 的阶乘。 def f(n):
if n>1: return n*f(n-1)
else: return 1
f(4) 14. 用递归函数实现输出 fibonacci 数列的第 20 项。
2. 求 s=1+2+3+…+100 def sum1(n): s=0 for i in range(1,______): s=s+i _________ print(sum1(100))
3. 编写求正整数 n 的阶乘的函数。 def f(n): t=1 for i in range(_______): t=t*i return t print(f(4))
if m>n: min=n
else: min=m
for i in range(1,________): if (m%i==0) and (n%i==0): c=i
return _______ print(gys(12,16)) 10. 编写函数,计算形如 a+aa+aaa+…+aa…aaa 的表达式的值,其中 a 为小于 10 的自 然数。 def sum2(m,n):
def fun(x,eps=1e-6): s=0 t=i=f=1 while x/f>eps: f=1 for j in range(1,___________): f=f*j s=s+t*x/f t=-t i=___________ return s
x=eval(input("请输入 x 的值:")) print(fun(x,eps=1e-6)) 12. 用递归法求 1+2+3+….+100 之和。 def sum1(n):
s=m f=m for i in range(2,n+1):
f=_________ s=s+f
return s a=eval(input("请输入一个小于 10 的自然数:")) b=eval(input("输入一个最后一个数的位数")) print(sum2(2,6)) 11. 编写函数,求下列级数的部分和,当第 n 项的精度小于 eps 时结束,设 eps 的默认 值为 10-6 。函数形式为:def fun(x,eps=1e-6)
for i in range(2,n): if n%i==0: break; if i>=n-1: t.append(n)
for j in range(len(t)-1): if ________==2: print(t[j],t[j+1])
return Prime() 8. 编写函数,定义打印 n 行无返回值的正三角星号图形的函数。(可以扩展更多关于 图形的打印)。 def print_star(n):
for i in range(n+1): print(' '*(n-i),end='') print('*'*(2*i-1))
print_star(7) 或 print(('*'*(2*i-1)).center(50)) 9. 编写函数,任意给出两个正整数,定义计算并返回这两个数的最大公约数的函数。 def gys(m,n):
4. 编写函数,求 n 阶调和数。
def my_fun3(n): s=0 for i in range(1,n+1): s=_________ return s
print(my_fun3(5)) 5. 编写生成斐波那契数列的函数并调用。
def fibonacci(n): for i in range(n):
实验九 自定义函数及其调用 一、 实验内容
1.函数的定义及调用; 2.函数参数传递、变量的作用域; 3.递归函数及其调用。
二、 实验要求
1.掌握函数的定义及调用; 2.掌握函数参数传递、变量的作用域; 3.掌握递归函数及其调用。
三、 实验过程
例题练习
1. 编写函数,求半径为 r 的圆面积。 def my_fun1(r): s=3.14*r*r return s print(my_fun(4))
if i>=n-1: return True
else: return False
n=int(input("请输入一个正整数:")) print(Prime(n)) 7. 编写函数,输出 1-100 之间的所有孪生素数。相邻两个素数差为 2 就叫孪生素数。 def Prime():
t=[] for n in range(2,100):
if i>1: fei.append(_________)
else: fei.append(1)
fei=________ fibonacci(10) print(fei) 6. 编写函数,判断已知正整数 n 是否是素数,如果是则返回 True,否则返回 False。 def Prime(n):
for i in range(2,n): if n%i==________: break;
def fabonacci(n): if n==1 or n==2: return 1 else: return fibonacci(n-1)+fibonacci(n-2)
priBaidu Nhomakorabeat(fibonacci(20)) 15. 用递归算法实现输出 fibonacci 数列的前 20 项。
def fibonacci(n): if n==1 or n==2: return 1 else: return fibonacci(n-1)+fibonacci(n-2)
num=100 def f():
num=102 print(num) f() print(num) def add(a,b): a=a+b return a a=1 b=2 print(a,b) add(a,b) print(a,b) def add(): global a a=a+5 return a a=1 print(a) add() print(a)
参考答案: 2. n+1, return s 3. 1,n+1 4. s+1/i 5. fei[i-1]+fei[i-2] 6. 0 7. t[j+1]-t[j] 9. min+1,c 10. m+f*10 11. i+1,i+2
main()
16. 用递归算法求正整数的各位数字之和。提示:
def sum1(m): s=0 if m<10: s=m else: s=m%10+sum1(m//10) return s
print(sum1(12345789)) 17. 输入并执行下列程序,理解变量的作用域。
s=0 if n==1:
return 1 else:
return n+sum1(n-1) print(sum1(100)) 13. 用递归方法求正整数 n 的阶乘。 def f(n):
if n>1: return n*f(n-1)
else: return 1
f(4) 14. 用递归函数实现输出 fibonacci 数列的第 20 项。
2. 求 s=1+2+3+…+100 def sum1(n): s=0 for i in range(1,______): s=s+i _________ print(sum1(100))
3. 编写求正整数 n 的阶乘的函数。 def f(n): t=1 for i in range(_______): t=t*i return t print(f(4))
if m>n: min=n
else: min=m
for i in range(1,________): if (m%i==0) and (n%i==0): c=i
return _______ print(gys(12,16)) 10. 编写函数,计算形如 a+aa+aaa+…+aa…aaa 的表达式的值,其中 a 为小于 10 的自 然数。 def sum2(m,n):
def fun(x,eps=1e-6): s=0 t=i=f=1 while x/f>eps: f=1 for j in range(1,___________): f=f*j s=s+t*x/f t=-t i=___________ return s
x=eval(input("请输入 x 的值:")) print(fun(x,eps=1e-6)) 12. 用递归法求 1+2+3+….+100 之和。 def sum1(n):
s=m f=m for i in range(2,n+1):
f=_________ s=s+f
return s a=eval(input("请输入一个小于 10 的自然数:")) b=eval(input("输入一个最后一个数的位数")) print(sum2(2,6)) 11. 编写函数,求下列级数的部分和,当第 n 项的精度小于 eps 时结束,设 eps 的默认 值为 10-6 。函数形式为:def fun(x,eps=1e-6)
for i in range(2,n): if n%i==0: break; if i>=n-1: t.append(n)
for j in range(len(t)-1): if ________==2: print(t[j],t[j+1])
return Prime() 8. 编写函数,定义打印 n 行无返回值的正三角星号图形的函数。(可以扩展更多关于 图形的打印)。 def print_star(n):
for i in range(n+1): print(' '*(n-i),end='') print('*'*(2*i-1))
print_star(7) 或 print(('*'*(2*i-1)).center(50)) 9. 编写函数,任意给出两个正整数,定义计算并返回这两个数的最大公约数的函数。 def gys(m,n):
4. 编写函数,求 n 阶调和数。
def my_fun3(n): s=0 for i in range(1,n+1): s=_________ return s
print(my_fun3(5)) 5. 编写生成斐波那契数列的函数并调用。
def fibonacci(n): for i in range(n):
实验九 自定义函数及其调用 一、 实验内容
1.函数的定义及调用; 2.函数参数传递、变量的作用域; 3.递归函数及其调用。
二、 实验要求
1.掌握函数的定义及调用; 2.掌握函数参数传递、变量的作用域; 3.掌握递归函数及其调用。
三、 实验过程
例题练习
1. 编写函数,求半径为 r 的圆面积。 def my_fun1(r): s=3.14*r*r return s print(my_fun(4))
if i>=n-1: return True
else: return False
n=int(input("请输入一个正整数:")) print(Prime(n)) 7. 编写函数,输出 1-100 之间的所有孪生素数。相邻两个素数差为 2 就叫孪生素数。 def Prime():
t=[] for n in range(2,100):
if i>1: fei.append(_________)
else: fei.append(1)
fei=________ fibonacci(10) print(fei) 6. 编写函数,判断已知正整数 n 是否是素数,如果是则返回 True,否则返回 False。 def Prime(n):
for i in range(2,n): if n%i==________: break;
def fabonacci(n): if n==1 or n==2: return 1 else: return fibonacci(n-1)+fibonacci(n-2)
priBaidu Nhomakorabeat(fibonacci(20)) 15. 用递归算法实现输出 fibonacci 数列的前 20 项。
def fibonacci(n): if n==1 or n==2: return 1 else: return fibonacci(n-1)+fibonacci(n-2)
num=100 def f():
num=102 print(num) f() print(num) def add(a,b): a=a+b return a a=1 b=2 print(a,b) add(a,b) print(a,b) def add(): global a a=a+5 return a a=1 print(a) add() print(a)
参考答案: 2. n+1, return s 3. 1,n+1 4. s+1/i 5. fei[i-1]+fei[i-2] 6. 0 7. t[j+1]-t[j] 9. min+1,c 10. m+f*10 11. i+1,i+2