-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.ts
111 lines (89 loc) · 3.31 KB
/
main.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
const li = document.getElementsByClassName('li') as HTMLCollection;
const arrayLi = Array.from(li);
const sumBtn = document.getElementById('sum') as HTMLButtonElement;
const inp = document.getElementById('inp') as HTMLInputElement;
// 1.Реализовать Числа Фибоначчи двумя способами (рекурсия и цикл)
//Recursion
function fibonacci(num: number): number {
return num <= 1 ? num : fibonacci(num - 1) + fibonacci(num - 2);
}
console.log(fibonacci(3));
//for loop
function fibon(nums: number): number [] {
let fib: number [] = [0, 1];
let data: number [] = [];
for(let i = 2; i <= nums; i++) {
fib[i] = fib[i - 1] + fib[i - 2];
data.push(fib[i]);
}
return data;
}
console.log(fibon(3));
//2.Рассчитать сумму натуральных чисел до n (2 решения - рекурсия и цикл)
function natulRow (n: number): number {
let total: number = 0;
for (let i = 1; i <= n; i++){
total += i;
}
return total;
}
console.log(natulRow(10));
const sum = (num:number): number => num > 0? num + sum(num - 1) : num;
console.log(sum(10));
// 3.Напишите функцию printNumbers(from, to), которая выводит число каждую секунду, начиная от from и заканчивая to.
// Сделайте два варианта решения.
// Используя setInterval.
// Используя рекурсивный setTimeout.
function printNumbers(from: number, to: number): number{
const id: number = window.setInterval(() => {
if(from <= to){
console.log(from++);
}
},1000);
return id;
}
console.log(printNumbers(0, 5));
const printNum = (from: number, to: number): number => {
const id:number = window.setTimeout( function Time() {
if(from <= to){
console.log(from++);
setTimeout(Time,1000);
}
},1000);
return id;
}
setTimeout(() => {
printNum(0, 5);
},5000);
// 4.Нужно создать интервал, который выводит в консоль количество секунд, прошедших с момента запуска программы.
// "Прошло: 1 сек."
// "Прошло: 2 сек." ..... и так далее
// Допишите программу так, чтобы она останавливалась при достижении 5 секунд и надпись о пройденном времени больше не выводилась в консоль.
const tickFunction = (): number => {
let tick: number = 0;
const id: number = window.setInterval(() => {
tick++;
console.log(`Прошло: ${tick} секунд`);
if(tick === 5){
clearInterval(id);
}
},1000)
return id;
}
setTimeout(() => {
tickFunction();
},12000);
const sumValuesFromList = (): number => {
let totalSum: number = 0;
const resultArr: number [] = [];
for(let li of arrayLi){
const trigger = parseInt(li.innerHTML);
if(!Number.isNaN(trigger)){
resultArr.push(trigger);
totalSum += trigger;
inp.value = `${resultArr.join('+')} = ${totalSum}`;
}
}
return totalSum;
}
sumBtn.addEventListener('click', sumValuesFromList);