⏭️ 🟠 Վարժություն 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 անդամների գումարի բանաձևը։ Կստանանք, որ տպված * ների քանակը հավասար է`
 
 
To check your solution you need to sign in
Sign in to continue