Написать функцию, вычисляющую сумму чисел Фибоначчи, не превосходящих заданного числа - Lisp

Узнай цену своей работы

Формулировка задачи:

Нужна помощь
HomeLisp

Решение задачи: «Написать функцию, вычисляющую сумму чисел Фибоначчи, не превосходящих заданного числа»

textual
Листинг программы
  1. (defun sum-fib (n &optional (p 1) (c 1) (r 0))
  2.   (if (> c n) r (sum-fib n c (+ c p) (+ r c))))
  3.  
  4. ==> sum-fib
  5.  
  6. (sum-fib 1)
  7.  
  8. ==> 1
  9.  
  10. (sum-fib 2)
  11.  
  12. ==> 3
  13.  
  14. (sum-fib 3)
  15.  
  16. ==> 6
  17.  
  18. (sum-fib 10)
  19.  
  20. ==> 19
  21.  
  22. (sum-fib 10000)
  23.  
  24. ==> 17709

Объяснение кода листинга программы

В данном коде написана функция sum-fib, которая вычисляет сумму чисел Фибоначчи, не превосходящих заданное число n. Функция получает три параметра: n — число, не превосходящее сумму двух предыдущих чисел Фибоначчи; p — первое число Фибоначчи; c — второе число Фибоначчи. Если c больше n, то функция возвращает r, иначе рекурсивно вызывает себя с обновленными значениями c и r, которые являются суммой предыдущего числа Фибоначчи и p. В итоге функция возвращает сумму чисел Фибоначчи, не превосходящих заданное число n. Количество элементов в списке не превышает 20.

  1. (defun sum-fib (n &optional (p 1) (c 1) (r 0)) — определение функции sum-fib с тремя опциональными параметрами
  2. (if (> c n) r (sum-fib n c (+ c p) (+ r c))) — рекурсивный вызов функции sum-fib с обновленными значениями c и r
  3. (sum-fib 1) — вызов функции sum-fib с аргументом 1
  4. 1 - результат вызова функции sum-fib с аргументом 1
  5. (sum-fib 2) — вызов функции sum-fib с аргументом 2
  6. 3 - результат вызова функции sum-fib с аргументом 2
  7. (sum-fib 3) — вызов функции sum-fib с аргументом 3
  8. 6 - результат вызова функции sum-fib с аргументом 3
  9. (sum-fib 10) — вызов функции sum-fib с аргументом 10
  10. 19 - результат вызова функции sum-fib с аргументом 10
  11. (sum-fib 10000) — вызов функции sum-fib с аргументом 10000
  12. 17709 - результат вызова функции sum-fib с аргументом 10000

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы