我最近为一家公司的面试前做了一个编程问题。问题是:
创建一个django应用程序,当然是测试驱动的,向世界展示Fibonacci的序列。应用程序应该取一个索引号并显示结果斐波纳契序列。另外,应该有一个页面显示最近生成的序列。另外,Fibonacci有点不耐烦,不想一直等着,所以一定要采取措施确保web服务器高效运行。在
我想到了以下几点: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})
“最新”视图是我的第二个版本,因为第一个版本的工作并不一致。原始版本在最新版本中存储了“index”中的结果。LATEST最初是fib序列的列表,而不是N的最近值的列表
我想我的主要问题是,将运行时生成的最大fib序列存储在视图.py文件?我知道这不是一成不变的,但指令从来没有真正给出应该如何做的细节。你们觉得怎么样?你们会怎么解决这个问题?在
谢谢各位!在