Фибоначчи в Python не может запустить код, получающий синтаксическую ошибку или другое - PullRequest
0 голосов
/ 19 октября 2018

введите описание изображения здесь Я пытаюсь запустить этот код, чтобы получить числа Фибоначчи в диапазоне 1-11

def fibonacci(n):
  if n == 1  or n == 2
    return 1
  return fibonacci(n-1) + fibonacci(n-2)
for i in range (1, 11):
  print(fibonacci(i))

, но я получаю:

**Traceback (most recent call last):
  File "python", line 2
    if n == 1  or n ==2
                      ^
SyntaxError: invalid syntax**

В этом видео уроке парень делает то же самое и получает результат, которого я не понимаю - https://www.youtube.com/watch?v=Cz476EsH1Lc&t=3s 3: 10

версия 2.7.6

Теперь я получаю: IndentationError: ожидал блок с отступом - решено

Теперь я пытаюсь напечатать только значение fibonacci = 11, и это не удается, я не получаю результата def fibonacci (n): еслиn == 1 или n == 2: вернуть 1 вернуть фибоначчи (n-1) + фибоначчи (n-2) print (fibonacci (11))

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

В вашей ошибке указывается, что вы пропустили : в операторе if.Также ваши отступы не верны.

if n == 1 or n ==2:  # focus on ':' at the end.
0 голосов
/ 19 октября 2018

У вас есть проблемы с синтаксисом: с пробелами и ":".Ваш код будет работать так:

def fibonacci (n) :
  if n == 1  or n ==2:
    return 1
  return fibonacci (n-1)  + fibonacci(n-2)
for i in range (1,11):
  print (fibonacci (i))

Другой пример:

def fibonacci2(num):
  a = 1
  b = 0
  res = []
  temp=0
  while (num >= 0):
    temp = a
    a = a + b
    b = temp
    res.append(b)
    num -= 1
  return res
0 голосов
/ 19 октября 2018

Если вы точно скопировали свой код (помимо форматирования - отступы очень важны в python), то проблема в пропущенном : после n==2.

Это должно выглядеть примерно так:

def fibonacci (n):
    if n == 1 or n == 2: # the colon is missing here.
        return 1
    return fibonacci(n-1) + fibonacci(n-2)
...
...