Опубликован: 10.12.2015 | Уровень: для всех | Доступ: платный
Лекция 15:

Рекурсивные функции

< Лекция 14 || Лекция 15 || Лекция 16 >

Иногда бывает необходимо вызывать некоторую функцию из этой же функции. Такие функции называются рекурсивными. Ниже приводится два примера использования рекурсивных функций.

  1. Рекурсивная функция возведения в степень
    //==========================================================
    // Name        : recursion_expo.cpp
    // Author      : Marat
    // Version     :
    // Copyright   : Your copyright notice
    // Description : Hello World in C++, Ansi-style
    //==========================================================
    
    #include <iostream>
    using namespace std;
    
    //Рекурсивная функция возведения в степень
    double expo(double a, int n)
    {
    double expo(double a, int n);
    if (n==0) return 1;
    if (a==0) return 0;
    if (n>0)  return a*expo(a, n-1);
    if (n<0)  return expo(a, n+1)/a;
    }
    
    int main() {
    	double expo(double a, int n);
    	double a;
    	int n;
    	double c;
    	cout<<"\nInput real base of exponent = ";
    	cin>>a;
    	cout<<"\nInput integer degree of exponent = ";
    	cin>>n;
    	c=expo(a,n);
    	cout<<"\nExponential of ["<<a<<"] in ["<<n<<"] degree = "<<c<<endl;
    	return 0;
    }
    

    Результат:

    Input real base of exponent = 6.57
    Input integer degree of exponent = 4
    Exponent of [6.57] in [4] degree is 1863.21
    
  2. Рекурсивная функция вычисления факториала
    //==========================================================
    // Name        : recursion_factorial.cpp
    // Author      : Marat
    // Version     :
    // Copyright   : Your copyright notice
    // Description : Hello World in C++, Ansi-style
    //==========================================================
    
    #include <iostream>
    using namespace std;
    long fact(int k)//Рекурсивная процедура
    {
    long fact(int k);
    if (k<0)  return 0;
    if (k==0) return 1;
    return k*fact(k-1);
    }
    
    int main() {
    	long fact(int k);
    	int k;
    	cout<<"\nInput integer number, please = ";
    	cin>>k;
    	int n=fact(k);
    	cout<<"\nFactorial of ["<<k<<"] = "<<n<<endl;
    	return 0;
    }
    

    Результат:

    Input integer number, please = 5
    Factorial of [5]=120
    
< Лекция 14 || Лекция 15 || Лекция 16 >
Зося Ковалева
Зося Ковалева

Хочу получить удостоверение. Сколько стоит оплата?

Aleksey Aplaev
Aleksey Aplaev
Россия, Chelybinsk
Александр Сидоров
Александр Сидоров
Россия, Самара