⏭️ 🟠 Վարժություն 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