Отображать последовательность Фибоначчи, меньшую или равную номеру ввода в приложении фляги в конечной точке URL - PullRequest
0 голосов
/ 12 ноября 2018

Я использую приложение фляги и конечную точку URL, чтобы разрешить ввод числа. Затем я хочу отобразить последовательность Фибоначчи до тех пор, пока она не станет равной или меньшей введенного числа.

Это то, что у меня сейчас есть:

@app.route("/fibonacci/<int:param_fi>/")
def getFib(param_fi):
if param_fi < 2:
    return ('0,1,1')
else:
    L = getFib(param_fi-1)
    if L[-1] < param_fi:
        L.append(L[-1] + L[-2])
    return L

У меня возникают проблемы с точным определением, откуда произошла ошибка. Я пытался составить список и преобразовать его в строки, но не могу заставить его работать. Когда я пытаюсь это, он возвращает следующую ошибку: «Функция представления не вернула правильный ответ. Тип возвращаемого значения должен быть строкой, кортежем, экземпляром Response или вызываемым WSGI, но это был список.»

Я ищу следующий вывод:

/ fibonacci / 250 (это пользовательский ввод) /

0,1,1,2,3,5,8,13,21,34,55,89,144,233

Или / fibonacci / 90 (это пользовательский ввод) /

0,1,1,2,3,5,8,13,21,34,55,89

Любая помощь приветствуется.

Final

@app.route("/fibonacci/<int:param_fi>/")
def getFib(param_fi):
    i = 0
    j = 1
    sequence = []
    current_operation = 0
    index = 0
    while True:
        sequence.append(i)
        current_operation = i + j
        i = j
        j = current_operation
        if i > param_fi:
            return json.dumps(sequence)
        else:
            index += 1
    return json.dumps(sequence)

1 Ответ

0 голосов
/ 12 ноября 2018

Я не понял ошибку, вы можете вывести результат, который хотите получить?Вам нужен рекурсив, как вы это сделали или нет?

Но я полагаю, вы что-то упустили?Вы возвращаете только 0 или 1, или сумму обоих, так что да, у вас никогда не будет полной последовательности Фибоначчи.

Вам необходимо сохранить в памяти последовательность или возвращать список и добавлять элементы каждый раз, по крайней мере.

РЕДАКТИРОВАТЬ https://repl.it/@skapin/AcceptableFoolishAssemblylanguage

def fibo(params):
  i = 0
  j = 1
  sequence = []
  current_operation = 0
  for current_n in range(0, params+1):
    # We appends now, since f(0) = 0 = i_initial , f(1) = 1 =j_initial
    sequence.append(i)
    # prepare next opération
    current_operation = i + j
    i = j
    j = current_operation

  return sequence

print(fibo(10))

РЕДАКТИРОВАТЬ 2-колбу

from flask import jsonify

@app.route("/fibonacci/<int:param_fi>/")
def get_fibo(param_fi):
    return jsonify(fibo(param_fi))

Финал

from flask import jsonify
def fibo(params):
  i = 0
  j = 1
  sequence = []
  current_operation = 0
  index = 0
  while True:
    # We appends now, since f(0) = 0 = i_initial , f(1) = 1 =j_initial
    sequence.append(i)
    # prepare next opération
    current_operation = i + j
    i = j
    j = current_operation
    # Stop condition
    if i > params:
      return sequence
    else:
      index += 1

  return sequence


@app.route("/fibonacci/<int:param_fi>/")
def get_fibo(param_fi):
    return jsonify(fibo(param_fi))
...