Написать эту программу на С++ используя рекурсию

Приложения:

Ответы

Ответ дал: lolejeis
0

// factorial.cpp: определяет точку входа для консольного приложения.

#include "stdafx.h"

#include <iostream>

using namespace std;

unsigned long int factorial(unsigned long int);// прототип рекурсивной функции

int i = 1; // инициализация глобальной переменной для подсчёта кол-ва рекурсивных вызовов

unsigned long int result; // глобальная переменная для хранения возвращаемого результата рекурсивной функцией

int main(int argc, char* argv[])

{

int n; // локальная переменная для передачи введенного числа с клавиатуры

cout << "Enter n!: ";

cin >> n;

cout << n << "!" << "=" << factorial(n) << endl; // вызов рекурсивной функции

system("pause");

return 0;

}

unsigned long int factorial(unsigned long int f) // рекурсивная функция для нахождения n!

{

if (f == 1 || f == 0) // базовое или частное решение

return 1; // все мы знаем, что 1!=1 и 0!=1

cout << "Stept" << i << endl;

i++; // операция инкремента шага рекурсивных вызовов

cout << "Result= " << result << endl;

result = f * factorial(f - 1); // функция вызывает саму себя, причём её аргумент уже на 1 меньше

return result;

}

Ответ дал: simbion0
0

#include <iostream>

#include <vector>


int min_possitive(int a, int b)

{

if (a > 0)

{

 if (b > 0)

 {

  return a < b ? a : b;

 }

 else

 {

  return a;

 }

}

else if (b > 0)

{

 return b;

}

else

{

 // Ошибка в случае если 2 числа отрицательны или равны 0

 return -1;

}

}


int min(std::vector<int> vec, int size)

{

int temp;

if (size == 1)

{

 return vec[0];

}


temp = min(vec, --size);


return min_possitive(vec[size], temp);

}


int main()

{

std::vector<int> vec(10);


std::cout << "Enter 10 numbers separated by a space: ";

for (auto& val : vec)

{

 std::cin >> val;

}


int min_p = min(vec, vec.size());

if (min_p == -1)

{

 std::cout << "No positive numbers!" << std::endl;

}

else

{

 std::cout << "Min == " << min_p << std::endl;

}

return 0;

}

Ответ дал: Аноним
0
А, все ясно, спасибо.
Ответ дал: simbion0
0
Так должно работать
Ответ дал: simbion0
0
int min_possitive(int a, int b)
{
if (a > 0)
{
if (b > 0)
{
if (a < b)
{
return a;
}
else
{
return b;
}
}
else
{
return a;
}
}
else if (b > 0)
{
return b;
}
else
{
// Ошибка в случае если 2 числа отрицательны или равны 0
return -1;
}
}
Ответ дал: simbion0
0
int min(std::vector vec, int size)
{
int temp;
if (size == 1)
{
return vec[0];
}

temp = min(vec, --size);

return min_possitive(vec[size], temp);
}
Ответ дал: simbion0
0
int main()
{
std::vector vec(10);

std::cout << "Enter 10 numbers separated by a space: ";
for (int i = 0; i < vec.size(); ++i)
{
std::cin >> vec[i];
}

int min_p = min(vec, vec.size());
if (min_p == -1)
{
std::cout << "No positive numbers!" << std::endl;
}
else
{
std::cout << "Min == " << min_p << std::endl;
}
return 0;
}
Вас заинтересует