Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
прога 2012.docx
Скачиваний:
3
Добавлен:
17.09.2019
Размер:
1.45 Mб
Скачать
  1. Понятие рекурсии, рекурсивное вычисление факториала:

Рекурсия – прием, при котором нечто выражается через такое же. Рекурсия как прием часто применяется : в математике, в дискретной математике, в программировании. Применяется для построения и описания данных, для формулирования методов решения задач, для построения алгоритмов и программ. Наиболее успешные результаты получаются, если рекурсия применяется как для определения данных, так и для решения задач с этими данными.

N!=N*(N-1)!

При рекурсии должен быть предусмотрен вариант, в котором рекурсия не нужна: 1!=1.

Факториал:

public class Factorials {//рекурсия

public static long factR (int n) {

if (n<2) return 1L;

else return n*factR (n-1) ;

////////////второй вариант рекурсии////

другой вариант функции

public static long factR (int n) {

long r = 1L;

if (n >1) r = n * factR (n-1);

return r;

}

//////////////////////////////////////////////////

}

public static long factNr ( int n ){ //нерекурсивный

long r = 1L;

for(int i = 2; i <= n; i++) r *= i;

return r;

}

public static void main (String[ ] args) { //проверка функций

long fr, fnr;

for(int i=5; i<22; i++) { fr = factR(i); fnr = factNr ( i );

System.out.println(" “ + i + "! =“ +fr + " “ + fnr);

}

}

  1. Понятие рекурсии, рекурсивное вычисление суммы элементов массива:

Рекурсия – прием, при котором нечто выражается через такое же. Рекурсия как прием часто применяется : в математике, в дискретной математике, в программировании. Применяется для построения и описания данных, для формулирования методов решения задач, для построения алгоритмов и программ. Наиболее успешные результаты получаются, если рекурсия применяется как для определения данных, так и для решения задач с этими данными.

При рекурсии должен быть предусмотрен вариант, в котором рекурсия не нужна: 1!=1.

Public class RecSum{

Public static intarSum(int [] B, intsart, int end){

Int res=0;

If(start<=end){

If(start==end)res=B[start]; // нерекурсивнаячасть

Else res=B[start]+arSum(B,start+1,end);//рекурсивнаячасть

}

Return res;

}

Public static void (){

Intn,sum;

Int[]A= new int[]{1,2,3,4,5};

n=A.length;

sum=arSum(A,0,n-1);

}

}

  1. Понятие рекурсии, рекурсивное вычисление максимального элемента массива:

Рекурсия – прием, при котором нечто выражается через такое же. Рекурсия как прием часто применяется : в математике, в дискретной математике, в программировании. Применяется для построения и описания данных, для формулирования методов решения задач, для построения алгоритмов и программ. Наиболее успешные результаты получаются, если рекурсия применяется как для определения данных, так и для решения задач с этими данными.

При рекурсии должен быть предусмотрен вариант, в котором рекурсия не нужна: 1!=1.

Public class Max{

public static intarMin( int[ ] B, int start, int end) {

intres=0;

if (start<=end) { res = B[start];

if (start<end) {

int min = arMin (B,start+1,end);

if (res<min) res=min;

};

};

return res;

}

public static void main ( String[ ] args ) {

int[ ] A = { 10, 3, 5, 1, 6, 4, 2, 8 }; //создание массива

intamin = arMin (A,0,A.length-1);

System.out.println (amin); //вызов метода и печать результата

}

}