您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页python--递归算法篇

python--递归算法篇

来源:化拓教育网

1、给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n), 可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数

def repeat(ls:list) -> list:
	#把个数超过1的数,放进另一个列表中
	a = []
	for i in ls:
		if ls.count(i) >= 2:
			a.append(i)
    print(a)
	#去掉a列表中重复的数,是源列表中重复的整数
	b =[]
	for n in a:
		if n not in b:
			b.append(n)
	return b
 
 
ls = [4,5,7,2,9,4,0,2]
print(ls)
print(f"重复的值有{repeat(ls)}")

 

2、找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)

def Divisible_by_5_6(x:int)->list:
    arr=[]
    for i in range(1,x+1):
        if (i % 5 == 0 or i % 6 ==0 ):
            if i % 5 == 0 and i % 6 ==0:
                continue  #利用continue跳过能被5和6整除的数
            else:
                arr.append(i)
    return(arr)
 
print(Divisible_by_5_6(1000))

 

 

3、写一个方法,计算列表所有偶数下标元素的和(注意返回值)

def ouxiabiao_sum(ls=[]):
	sum = 0
	for i in range(len(ls)):
		xiabiao = i
		if int(ls[xiabiao]) % 2 == 0:
			sum += xiabiao	
	return sum
 
 
n = int(input('请输入列表包含的元素个数:'))
ls = []
for i in range(1,n+1):
    item = input(f'请输入列表1的第{i}个元素:')
    ls.append(item)
 
print(f"列表所有偶数下标元素的和{ouxiabiao_sum(ls)}")

 

 

【选做】某个人进入如下一个棋盘中,要求从左上角开始走, 最后从右下角出来(要求只能前进,不能后退), 问题:共有多少种走法?

   

(我不会,看了别人的,懂了点)

def board(arr:list):
	if arr is None:
		return -1                
	if len(arr) == 1 and len(arr[0]) == 1:
		return 1

	for i in range(len(arr[0])):
		arr[0][i] = 1
	for i in range(len(arr)):
		arr[i][0] = 1
	for i in range(1, len(arr)):
		for j in range(1, len(arr[0])):
			arr[i][j] = arr[i - 1][j] + arr[i][j - 1]
 
	return arr[len(arr) - 1][len(arr[0]) - 1]

ls = [
		[0, 0, 0, 0, 0, 0, 0, 0],
		[0, 0, 0, 0, 0, 0, 0, 0],
		[0, 0, 0, 0, 0, 0, 0, 0],
		[0, 0, 0, 0, 0, 0, 0, 0],
		[0, 0, 0, 0, 0, 0, 0, 0],
	]
count = board(ls)
print(f"从左上角开始走,到右下角,共有{count}种走法")

 

 

【选做】汉诺塔:

汉诺塔也没写出来

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务