Любое натуральное число N может быть сведено к 1 за конечное число шагов k по следующему алгоритму. Если число N делится на 3, то его надо разделить на 3. В противном случае к N надо прибавить 1.
пример: с числом 1 ничего делать не надо - оно уже равно 1. число 2 приводится к 1 так: 2 => 3 => 1.(за два шага) число 9 приводится к 1 так: 9 => 3 => 1(тоже за два шага)
Задача.
Написать программу, где задается число шагов k и находится НАИМЕНЬШЕЕ число, соответствующее этому шагу и приводящее к 1.
Вывести на экран 20 первых таких чисел.
Вопрос
Что изменится в программе, если в алгоритм будет внесено изменение: "....... В противном случае надо от N вычесть 1"?
Код:
DECLARE FUNCTION f& (k&)
CLS
DEFLNG A-Z
FOR i = 0 TO 20
PRINT i; f(i)
NEXT
END
FUNCTION f& (k AS LONG)
SELECT CASE k
CASE 0: f = 1
CASE 1: f = 3
CASE 2: f = 2
CASE 3: f = 6
CASE 4: f = 5
CASE ELSE
f = 3 * f(k - 3) - 2
END SELECT
END FUNCTION