数据结构处算法python--第四章课后练习题

本文介绍了Python编程中数据结构和算法相关的课后练习题,涉及时间复杂度、空间复杂度、递归、字符串翻转、回文判断等概念,通过实例展示了如何运用这些知识解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#4.1
# 时间复杂度和空间复杂度都是O(n)
# def search_bigvalue(s,n):
#     if n==1:
# #这其实就是m的值,s[n-1]是上一个值,当每一次调用函数一直被悬挂,直到最后n==1,说明其中只有一个元素
# # 就返回这个值,然后s[n-1] if s[n-1]>m else m在这里进行比较,返回大的,又回到上一级的函数
# # 进行比较,直至比完所有元素。
#         return s[0]
#     m=search_bigvalue(s,n-1) #这里是n-1还是n,下面那个函数的index,减不减1取决于
# #它的值是多少,这里n最小是1,所以减一,就可以取到第一个值,下面那个默认是0,本身
# #就会取到第一个值。
#     print(s[n - 1],'sdf')
#     # print(m,'lsdmmmmmm')
#     return s[n-1] if s[n-1]>m else m
# seq=[10,2,4,5,4,3,6,7,3]
# n=len(seq)
# print(search_bigvalue(seq,n))

# def findmax(s,index=0):
#     if index==len(s)-1:
#         return s[index]
# #函数下来之后,一直在这里循环,直至长度为1,减1为0就返回s[index],这里递归调用完结了
# #,但只有最后一个函数返回了,其他的还没有,这时执行下面的if语句,跟函数每一次的返回值比较
#     print(index)
#     m=findmax(s,index+1)
#     print(index)  #两个打印的数值顺序正好是相反的,上面的是升序,下面的是降序
# #因为是上面的递归调用完了之后,到了最后一层,下面的再依次往上比
# #m是最后一个值
#     if m>s[index]:
#         return m
#     return s[index]
# print(findmax([10,1,2,4,5,4,3,6,7,3]))

#4.2
# def power(x,n):
#     if n==0:
#         return 1
#     else:
#         return x*power(x,n-1)
# print(power(2,3))
# (power(2,3)
# (power(2,2)
# (power(2,1)
#(power(2,0)
# 顺序是上面那样,达到最大递归深度,这时n==0,它返回了1,
#求的是2的3次幂,当n为0时,return了1,此时2*1,值为2,然后往上面一层返回,
#x*power(x,n-1)就成了2*2,因为power(x,n-1)返回来的值是2,以此类推,将4又返回
#上面的2*4算出结果。

#4.4
# def reverse(s,start,stop):
#     if start<stop-1:
#         print(start,stop)
#         s[start],s[stop-1]=s[stop-1],s[start]
#         reverse(s,start+1,stop-1)
#     return s
# reverse(s,0,6)
# reverse(s,1,5)
# reverse(s,2,4)
# #以上是后面两个参数的变化 过程,当成为3,3,时这时if条件就进不去了。
# #它们的递归过程中,每次s两头的元素进行位置交换
# print(re
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值