Вычисление рекуррентно-заданной функции - VB
Формулировка задачи:
Описание функции
1. Каждое натуральное число имеет хотя бы один делитель
2. Само число не считается для себя делителем.
3. Дано число N.
4. Пусть его делители d1, d2, ...., dn
5. Наша функция выглядит так
f(N) = f(d1) + f(d2) + ... + f(dn) ;
и f(1) = 1
Надо написать программу, вычисляющую эту функцию для любого N.
Решение:
1. Рекуррентный вид функции сам собой напрашивался на рекурсивное
решение. Но вот проблема! Число слагаемых вещь переменная!
2. Хорошо. Что делать? Получить все Делители заданного числа легко.
Значит надо объявить массив, который будет набиваться заранее
вычисленными делителями. (Для нового числа обнулить его несложно)
3. Нужен цикл? Нужен. Но это ведь не просто сумма чего-то...
решал, решал... не идет решение (наверное к дождю). А решить хочется.
Может я не что-то не так делаю? Тааак! Решение где-то рядом!
Кто подскажет?
Решение задачи: «Вычисление рекуррентно-заданной функции»
textual
Листинг программы
Function f(n As Integer) As Integer f = 1 For i% = 1 To n \ 2 If n Mod i% = 0 Then f = f + f(i%) Next i% End Function Sub Test() m% = 500 Debug.Print f(m%) End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д