Отримання знань
дистанційна підтримка освіти школярів
Тут ви можете виконати завдання чи задати питання по змiсту цього уроку.
Михальов Володимир (StarRover) 2014-07-20 13:08:40
Приклад 3. Вирахувати факторіал натурального числа n (n!). За означенням факторіал n!=1*2*3...*...n-1*n Завдання. Запишіть рекурентну формулу та алгоритм рекурсивної функції обчислення факторіалу. n! = 1, якщо n=1 n*(n-1)!, якщо n>1 {Fact} var n:longint; function Fact(x:longint):longint; begin if x=0 then Fact:=1 else Fact:=x*Fact(x-1); end; begin Read(n); WriteLn(Fact(n)); end. |
Михальов Володимир (StarRover) 2013-11-18 11:54:14
Приклад 4. Знайти найменший???(напевно потрібно "найбільший") спільний дільник двох натуральних чисел. Рекурентна формула алгоритма Евкліда, запишеться : (НСД двох чисел рівний НСД меншого та різниці між більшим та меншим - відома теорема Евкліда) Завдання. Запишіть алгоритм рекурсивної функції обчислення НСД двох натуральних чисел. {GCD} var x,y:longint; function GCD(a,b:longint):longint; begin if a=b then GCD:=a else if a>b then GCD:=GCD(a-b,b) else if a then GCD:=GCD(a,b-a); end; begin Read(x,y); WriteLn(GCD(x,y)); end. |
Михальов Володимир (StarRover) 2014-08-10 15:53:51
1.Відтворіть рекурентну формулу для цього алгоритма. ---------------------------------------------------- P(1)=1; P(n)=n*P(n-1) ======================================================== 2. Напишіть на Pascal програму, що використовуватиме дану процедуру. Програма читає з клавіатури кількість символів і самі символи і виводить на екран всі можливі перестановки ПРИКЛАД Введення 3 а b с Виведення abc bac cba bca acb cab -------------------------------------------------- {Change} const max=10; var n:longint; a:array[1..max] of char; s:string[max*2]; procedure Change(k:longint); var i:longint; t:char; begin if k=1 then begin for i:=1 to n do Write(a[i]); WriteLn; end else begin Change(k-1); for i:=1 to k-1 do begin t:=a[i];a[i]:=a[k];a[k]:=t; Change(k-1); t:=a[i];a[i]:=a[k];a[k]:=t; end; end; end; Procedure ReadMas; var i,k:longint; t:char; begin Read(s); i:=0; k:=0; while i<=n do begin k:=k+1; if s[k]<>' ' then begin i:=i+1; a[i]:=s[k]; end; end; end; begin ReadLn(n); ReadMas; Change(n); end. |
В системі:
гості - (1); користувачі -
(0)