#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
数据结构处算法python--第四章课后练习题
于 2022-05-11 18:05:19 首次发布