История изменений
Исправление HolyBoy, (текущая версия) :
Есть т.н. треугольные числа:
f (n) = sum j , где j=1…n.
Так что,
f(1) = 1 f(2) = 3 f(3) = 6 f(4) = 10
и т.д., т.е. n-ное число — это сумма n-первых натуральных целых чисел.
Пирамидальные числа через треугольные выражаются как
g (n) = sum f (j) , где j=1…n
Иными словами, пирамидальное число — это сумма n-первых треугольных чисел.
Функции fermaTria и fermaTriaAcc — соответственно, рекурсивный и хвосторекурсивный варианты нахождения треугольного числа. fermaPyr, fermaPyrAcc2 и fermaPyrAcc — пирамидального.
Варианты a,b,c — разные способы комбинирования рекурсивных и хвосторекурсивных функций.
Я специально в стартовом посте упомянул про вариант b, повторю здесь ещё раз:
но время исполнения… при аргументе на 2 порядка меньше, чем в других вариантах, работает в несколько раз медленнее.
Функции fermaPyr и fermaPyrAcc2 работают верно и выдают верный результат.
С функцией fermaPyrAcc и в самом деле не так что-то. Неверный результат вычислений и они идут слишком долго. Думаю.
Исходная версия HolyBoy, :
Есть т.н. треугольные числа:
f (n) = sum j , где j=1…n.
Так что,
f(1) = 1 f(2) = 3 f(3) = 6 f(4) = 10
и т.д., т.е. n-ное число — это сумма n-первых натуральных целых чисел.
Пирамидальные числа через треугольные выражаются как
g (n) = sum f (j) , где j=1…n
Иными словами, пирамидальное число — это сумма n-первых треугольных чисел.
Функции fermaTria и fermaTriaAcc — соответственно, рекурсивный и хвосторекурсивный варианты нахождения треугольного числа. fermaPyr и fermaPyrAcc — пирамидального.
Варианты a,b,c — разные способы комбинирования рекурсивных и хвосторекурсивных функций.
Я специально в стартовом посте упомянул про вариант b, повторю здесь ещё раз:
но время исполнения… при аргументе на 2 порядка меньше, чем в других вариантах, работает в несколько раз медленнее.
Функции fermaPyr и fermaPyrAcc2 работают верно и выдают верный результат.
С функцией fermaPyrAcc и в самом деле не так что-то. Неверный результат вычислений и они идут слишком долго. Думаю.