Дыбр и программистское
Feb. 20th, 2015 03:29 pmВ первой половине дня мироздание как будто специально не давало мне сделать очередной задание по курсу. Постоянно шли звонки, то по городскому телефону, то по мобильному. Но задание я всё-таки сделала, пусть не так, как сделал его преподаватель. Что-то рекурсия мне тяжело даётся...
Света
svet_k, к тебе вопрос.
Условие задачи: разработать функцию super_fibonacci(n, m), которая принимает два аргумента: положительные целые числа n и m (0 < n, m <= 35), и возвращает число: n-й елемент последовательности супер-Фибоначчи порядка m.
Последовательность Фибоначчи - Это последовательность чисел, в которой каждый элемент равен сумме двух предыдущих. Последовательность супер-Фибоначчи порядка m - это последовательность, в которой каждый элемент равен сумме m предыдущих. Первые m элементов (с порядковыми номерами от 1 до m) будем считать единицами.
Решение преподавателя:
def super_fibonacci(n, m):
if n<=m:
return 1
else:
sum = 0
for i in range(1, m+1):
previous = super_fibonacci(n-i, m)
sum = sum + previous
return sum
Например, я вызываю функцию с такими параметрами:
super_fibonacci(9, 3)
Я не могу понять, как работает эта рекурсия, чему будет равно previos при первом проходе цикла?
И о шоппинге. Неожиданно купили Лёше ботинки осенне-весенние. За 735 грн., 42 размер., кожаные. Скидка с 2200 грн., неплохо так?
Света
Условие задачи: разработать функцию super_fibonacci(n, m), которая принимает два аргумента: положительные целые числа n и m (0 < n, m <= 35), и возвращает число: n-й елемент последовательности супер-Фибоначчи порядка m.
Последовательность Фибоначчи - Это последовательность чисел, в которой каждый элемент равен сумме двух предыдущих. Последовательность супер-Фибоначчи порядка m - это последовательность, в которой каждый элемент равен сумме m предыдущих. Первые m элементов (с порядковыми номерами от 1 до m) будем считать единицами.
Решение преподавателя:
def super_fibonacci(n, m):
if n<=m:
return 1
else:
sum = 0
for i in range(1, m+1):
previous = super_fibonacci(n-i, m)
sum = sum + previous
return sum
Например, я вызываю функцию с такими параметрами:
super_fibonacci(9, 3)
Я не могу понять, как работает эта рекурсия, чему будет равно previos при первом проходе цикла?
И о шоппинге. Неожиданно купили Лёше ботинки осенне-весенние. За 735 грн., 42 размер., кожаные. Скидка с 2200 грн., неплохо так?