几个常见的面试题目

一:实现斐波那契数列数列,输入一个数列的位置数,返回斐波那契数列相应位置的值 斐波那契数列[1,1,2,3,5,8,13,21,34.....],第一个数是1,后面的数等于前两个数相加的结果 

 

def func(num):

    if (num == 1 or num == 2):
return 1
else:
return func(num - 1) + func(num - 2)

def fibo3(n):
    '''序列解包'''
    a, b = 1, 1
    for i in range(2, n+1):
        a, b = b, a+b
    return a

 二、古典问题:有一对出兔子,从第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(意味着生长期为2个月)

有同学对题目理解有误区,做下面几点说明

第一点:一对兔子生一对小兔子不是一只兔子生一对

第二点:小兔子出生之后,要长两个月,第三个月才开始生兔子

第三点:通过传函数的参数,来查询若干月之后的兔子总数(传入1就是第一个月,2就是第二个月)

 

def func(num):
if (num == 1 or num == 2):
return 2
else:
return func(num - 1) + func(num - 2)

 

 三、小明有100元钱 打算买100本书,A类书籍5元一本,B类书籍3元一本,C类书籍1元两本,请用程序算出小明一共有多少种买法?(面试笔试题)

book = 100
money = 100
num = 0
for a in range(int(money/5)):
for b in range(int(money / 3)):
for c in range(int(101)):
if a*5+b*3+c*0.5 <= 100 and a+b+c == 100:
num += 1
print(num)
posted @ 2019-05-12 22:39  帅瓶子  阅读(172)  评论(0编辑  收藏  举报