Python简单习题(函数)

建立函数----解决问题

1.求第n项的斐波那契数列的值(n>=1)

注:斐波那契数列指的就是一个这样的数列:1、1、2、3、5、8、13、21…

讲解: 我们不难的发现,从第三项开始就是前两项相加得到的。因此,我们可以使用循环语句来解答

def Jeff(n):
	if n==1:
		return 1
	elif n==2:
		return 1
	else:
		return Jeff(n-1)+Jeff(n-2)

print(Jeff(3))		

2. 兔子经过四个月,可以长大称为成年的兔子,可以生育新的兔子,假设成年兔子,每个月生一对小兔子,问,第n个月共有多少对兔子(加上兔子不死)

讲解: 这种题目与第一题类似,需要寻求其规律,则方便解答。

def get_rabbit(num):
	if num < 5:
		return 1
	return get_rabbit(num - 1) + get_rabbit(num - 4)

if __name__ == '__main__':#主函数
	print(get_rabbit(8))

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

讲解: 先创建一个容器,然后讲数值放入容器当中。通过循环语句进行遍历(可以考虑异或法)

def get_num_duplicate(nums):

	temp = 0
	for i in range(0, len(nums)):
		temp ^= i ^ nums[i]
	return temp

if __name__ == '__main__':
	nums = [1,2,8,3,4,5,6,7,8]
	d = get_num_duplicate(nums)
	print(f"数组中重复的是{d}")

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

讲解: 遍历10000以内的数字,采用循环的方式,对于每个数进行简单的if语句判断,

def math():
    ls = []
    for i in range(0,10001):
        flag = False
        if (i% 5 == 0 or i % 6 == 0) and i % 30 != 0:
            flag = True
        if flag:
            ls.append(i)
    print(ls)

math()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值