gpt4 book ai didi

python - 你会如何回答这个 Django 面试问题?

转载 作者:太空狗 更新时间:2023-10-29 21:40:53 25 4
gpt4 key购买 nike

最近在某公司面试前做了一道编程题。问题是:

创建一个 django 应用程序,当然是测试驱动,向世界展示斐波那契数列。该应用程序应采用索引号并显示生成的斐波那契数列。此外,应该有一个页面显示最近生成的序列。此外,Fibonacci 有点不耐烦,不想永远等待,因此请务必采取措施确保您的网络服务器高效运行。

我想到了以下内容:

from django.views.generic.simple import direct_to_template
from django.http import Http404

LARGEST_SEQUENCE = [0,1]
LARGEST = 1
LATEST = []

def fib(n):
"""Calculate the nth fibonacci sequence"""
global LARGEST
if n > LARGEST:
while n > LARGEST:
next = LARGEST_SEQUENCE[LARGEST] + LARGEST_SEQUENCE[LARGEST-1]
#print 'appending ', next
LARGEST_SEQUENCE.append(next)
LARGEST += 1
return LARGEST_SEQUENCE
else:
return LARGEST_SEQUENCE[0:n+1]

def latest(request):
results=[]
for n in LATEST:
result = fib(n)
results.append((n,result))
return direct_to_template(request, 'latest.html', {'results':results})

def index(request):
if request.method=="POST":
try:
n=int(request.POST.get('n'))
except:
return Http404
result = fib(n)
if len(LATEST) >= 5:
LATEST.pop()
LATEST.insert(0,n)
else:
result = None
return direct_to_template(request, 'base.html', {'result':result})

“最新” View 是我的第二个版本,因为第一个版本不能始终如一地工作。原始版本将“索引”的结果存储在 LATEST 中。 LATEST 原本是一个 fib 序列(列表)的列表,而不是 N 最近值的列表。

我想我的主要问题是,将运行时生成的最大 fib 序列存储在 views.py 文件中是否不好?我知道这不是持久性的,但说明从未真正详细说明应该如何做。你们怎么看,你们会如何解决这个问题?

谢谢大家!

最佳答案

每个线性递归方程都可以直接求解。在斐波那契的情况下,等式是

f_n+2 = f_n+1 + f_n
f_1 = 1
f_2 = 1

解决办法是:

f_n = 1/sqrt(5) * ((1+sqrt(5))/2)^n - 1/sqrt(5) * ((1-sqrt(5))/2)^n

使用这个直接公式。对于如何获得它,请寻找线性递归方程求解。例如。 here .

由于 float 错误,您应该将结果四舍五入到最接近的整数。

关于python - 你会如何回答这个 Django 面试问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7464233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com