Дипломная работа: Финансовые функции и рекурсия
Всем перечисленным условиям удовлетворяет рекурсивная программа-функция waste4(sum,p,A,k):
Здесь k - вспомогательный параметр. При первом обращении к waste4() его значение должно быть равно нулю. Далее k используется для организации рекурсивных вычислений, а операторы return - для прекращения рекурсивных вызовов при получении решения задачи.
Контрольные примеры.
Дисконтирование. Инвестиции. Консолидирование
Задача о дисконтировании
Какую сумму следует внести сегодня в банк при процентной ставке p, чтобы через n периодов получить S денежных единиц?
Решение. Фактически речь идет о вычислении величины, называемой экономистами современной стоимостью отложенного платежа. Если положить в банк сумму в R=S/(1+p/100) n единиц, то через n периодов она превращается в S единиц. Та же самая сумма R через n-1 период превращается в S/(1+p/100) единиц. Таким образом, если discount(S,p,n) - решение исходной задачи, то при n¹0 имеем:
discount(S,p,n) = discount(S/(1+p/100),p,n-1).
Будем проводить рекурсию по количеству периодов n. Тогда последнее соотношение дает нам правило декомпозиции. Отсюда и получаем программу-функцию (5):
(5)
На вопросе о том, как проведена декомпозиция в (6), останавливаться не будем:
(6)
Замечание. Из проведенных рассуждений вытекает, что решение задачи может быть получено по конечной формуле:
Контрольные примеры.
Задача о современной стоимости потока равных платежей.
Пусть реализация некоторого проекта обеспечивает поток равных платежей по S денежных единиц за каждый из n периодов при банковской ставке p процентов. Подсчитать современную стоимость этого потока.
Решение. Если просуммировать сегодняшнюю стоимость первого, второго и т.д. и, наконец, последнего платежа, то мы и получим современную стоимость всего потока. Пусть она равна payment(S,p,n). Тогда в силу задачи 6 о дисконтировании будем иметь:
Впрочем, никто не мешает нам вывести и конечную формулу для расчетов, которая выглядит так:
Однако мы займемся написанием рекурсивной программы-функции решения данной задачи. Выделить базу и провести декомпозицию наиболее просто, исходя из таких утверждений. Если n=0, то есть не прошло ни одного периода, то и платежей поступит 0. Далее, современная стоимость всех платежей - это современная стоимость платежей за первые n-1 период плюс современная стоимость последнего n-го платежа, равного S/(1+p/100) n. Отсюда и получаем функцию (7):
(7)
Другой вариант рекурсивной функции решения задачи 7 можно записать так:
(8)
Контрольные примеры.