⏭️ 🟠 Վարժություն 13
Քանի՞ հատ *
կտպի տվյալ ծրագիրը։
#include <iostream>
void print(int n)
{
int i = 0;
if (n > 1)
print(n - 1);
for (i = 0; i < n; i++)
std::cout << " * ";
}
int main() {
int n;
std::cout << "Input number ";
std::cin >> n;
if (n < 0) {
std::cout << "Invalid input";
return 0;
}
print(n);
}
Հուշում 1
Փորձեք պատասխանել հարցին n
-ի փոխարեն օգտագործելով կոնկրետ թվեր։
Քանի՞ հատ *
կտպի ծրագիրը, եթե`
n=1
n=2
n=3
n=4
🚩 Հուշում 2
n=2
դեպքում կունենաք հետևյալ իրավիճակը։
Սկզբում կկանչվի print(2)
ֆունկցիան։ Այնուհետև կկանչվի print(1)
ֆունկցիան։
print(1)
կանչի ժամանակ կտպվի 1 հատ *
։
print(1)
կանչի ավարտից հետո կշարունակի աշխատել print(2)
ֆունկցիան, որը իր հերթին էկրանին կտպի ևս 2 հատ *
:
Այսպիսով, ընդհանուր առմամբ կտպվի 1 + 2 == 3
հատ *
:
n = 4
դեպքում ֆունկցիաների կանչի շղթան կունենա հետևյալ տեսքը`
print(1)
ֆունկցիան կտպի 1
հատ *
print(2)
ֆունկցիան կտպի 2
հատ *
print(3)
ֆունկցիան կտպի 3
հատ *
print(4)
ֆունկցիան կտպի 4
հատ *
Այսպիսով, ընդհանուր առմամբ կտպվի 1 + 2 + 3 + 4 == 10
հատ *
n = 10
- ի դեպքում ֆունկցիաների կանչի շղթան կունենա հետևյալ տեսքը։
Ընդհանուր առմամբ կտպվի
🚩 Հուշում 3 (լուծում)
Եթե փորձենք ընդհանրացնել լուծումը մուտքագրված կամայական n
թվի համար, կտեսնենք, որ տպված *
- երի քանակը հավասար է`
Վերհիշենք դպրոցական մաթեմատիկայի թվաբանական պրոգրեսիայի առաջին n
անդամների գումարի բանաձևը։ Կստանանք, որ տպված *
ների քանակը հավասար է`