Home work Lesson 3:
- 1. Рекурсія (завдання 1.1 - 1.5: факторіал, степень числа, суми цифр, задачі з learn.javascript.ru )
- При виконанні цих завдань не можна використовувати цикли, рядки, масиви. Дозволена лише
рекурсія і арифметика.
- 2. Виконати завдання 1.1 - 1.5 без використання рекурсії.
- 3. Визначити який варіант працює швидше (наприклад, скільки часу треба на 10000 обчислень)
if you want to see the result in the console click "Ctrl+Shift+J" or
F12
1.1. Написати рекурсивну функцію для обчислення факторіалу
function factorialRecursion(n) {
if (n == 0) {
return 1; }
else {
return n * factorialRecursion (n-1); }
}
1.2. Написати рекурсивну функцію для обчислення степені числа
function powerRecursion(x, n) {
if (n != 1 && n != 0) {
return x * powerRecursion(x, n - 1); }
else {
return x; }
}
1.3. Написати рекурсивну функцію для обчислення суми цифр цілого числа
(наприклад, сума цифр числа 3742 буде 3+7+4+2 = 16)
function sumRecursion(n) {
if (n < 10) {
return n; }
else {
return n % 10 + sumRecursion(Math.floor(n / 10)); }
}
1.4. Задача 1 з
learn.javascript.ru -
Вирахувати суму чисел до данного (sumTo(4) = 4 + 3 + 2 + 1 =
10) через рекурсію за формулою sumTo(n) = n + sumTo(n-1) для n > 1.
function sumToRecursion(n) {
if (n != 1) {
return sumToRecursion(n - 1) + n; }
else {
return n; }
}
function fibonacciRecursion(n) {
if (n <= 1) {
return n }
else {
return fibonacciRecursion(n - 1) + fibonacciRecursion(n - 2); }
}
2.1. Написати функцію для обчислення факторіалу без рекурсії
function factorial(n) {
var a = 1;
for (var i = 1; i <= n; i++) {
a = a * i; }
return a;
}
2.2. Написати функцію для обчислення степені числа без рекурсії
function power(x, n) {
var a = x;
for (var i = 1; i < n; i++) {
a *= x; }
return a;
}
2.3. Написати функцію для обчислення суми цифр цілого числа
(наприклад, сума цифр числа 3742 буде 3+7+4+2 = 16) без рекурсії
function sum(num) {
var n = 0;
for(var i = num; i > 0; i = Math.floor(i / 10)) {
n += (i % 10); }
return n;
}
2.4. Задача 1 з
learn.javascript.ru -
Вирахувати суму чисел до данного (sumTo(4) = 4 + 3 + 2 + 1 = 10) без рекурсії
function sumTo(sum) {
var n = 0;
for (var i = 1; i <= sum; i++) {
n += i; }
return n;
}
function fibonacci(n) {
var a = 1;
var b = 1;
for (var i = 3; i <= n; i++) {
var x = a + b;
a = b;
b = x; }
return b;
}
3.1.-3.5. Визначити який варіант функцій працює швидше (наприклад, скільки часу треба на 10000
обчислень)
function count(func, arg, steps){
console.time();
while(steps--){
func.apply(null, arg); }
console.timeEnd();
}