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

0 голосов
63 просмотров

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


image

Информатика (654k баллов) | 63 просмотров
Дано ответов: 2
0 голосов

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

#include "stdafx.h"

#include

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!: ";</p>

cin >> n;

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

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 << "Step\t" << i << endl;</p>

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

cout << "Result= " << result << endl;</p>

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

return result;

}

(22 баллов)
0 голосов

#include

#include


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 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 vec(10);


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

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;</p>

}

else

{

 std::cout << "Min == " << min_p << std::endl;</p>

}

return 0;

}

(1.3k баллов)
0

У вас старый компилятор не поддерживает новый стандарт языка c++

0

Так должно работать

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; }}

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);}

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;}