建立函数----解决问题
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()
|