Форум программистов, компьютерный форум, киберфорум
Наши страницы

Обьясните как работает рекурсия в данной задаче - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача на квадратную матрицу http://www.cyberforum.ru/cpp-beginners/thread29901.html
Дана целочисленная квадратная матрица. Определить: 1) Сумму элементов в тех столбцах, которые не содержат отрицательных элементов; 2) Минимум среди сумм модулей элементов диагоналей,...
C++ С указателями. Поменять местами строку матрицы, содержащую минимальные элементы и строку матрицы содержащей последний чётный элемент Нужен полный текст программы, заранее благодарен http://www.cyberforum.ru/cpp-beginners/thread29871.html
C++ С использованием указателя. Даны два одномерных массива целых чисел А и В, сформировать массив С, содержащий элементы массива А , присутствующий в массиве В в нескольких экземплярах.
(Элементы массива С не должны повторяться) Нужен полный текст программы, заранее благодарен
Дана целочисленная квадратная матрица, найти количество строк с нечётной суммой элементов. C++
Нужен полный текст программы, заранее благодарен
C++ двумерный массив http://www.cyberforum.ru/cpp-beginners/thread29853.html
Дан целочисленный массив A. Заменить все элементы массива с максимальным значением на сумму цифр минимального элемента. написал, не работает! посмотрите пожалуйста где ошибки? #include...
C++ Множественное наследование Возник вопрос по теме множественное наследование. Вот скажем у нас определены классы: class Animal{ public: int GetAge(){return Age;} public: int Age; }; подробнее

Показать сообщение отдельно
Blade
0 / 0 / 0
Регистрация: 30.11.2008
Сообщений: 13

Обьясните как работает рекурсия в данной задаче - C++

13.04.2009, 20:54. Просмотров 1387. Ответов 3
Метки (Все метки)

есть вот такая програмка:
Код
#include <stdio.h>
#include <conio.h>

int a[100],cnt=0,N,K;

void fun(long S, int tek)
{
 if(tek==N)
  {
   if(S==K) cnt++;
   return;
  }

for(int i=0; S+a[tek]*i<=K; i++)
 {
  fun(S+a[tek]*i, tek+1);
 }
}


void main()
{
int i;

clrscr();
printf("Vvedite hislo elementov: ");
scanf("%d",&N);
for(i=0;i<N;i++)
 {
  printf("Vvedite a[%d]: ",i+1);
  scanf("%d",&a[i]);
 }
printf("\nVvedite symmy: ");
scanf("%d",&K);
printf("\n------------------\n");
fun(0,0);
printf("Kolichestvo variantov = %d\n",cnt);

getch();
}
Обьясните как работает рекурсия?

Смысл задачи:
Задано количество элементов n.Каждый элемент-монета(a1-an),разного достоинства которое задает пользователь.Вводится сумма k.Нужно вывести количесво вариантов выдачи этой суммы данными монетами. Т.е. количество решиний уравнения a1x1+...+anxn=k.
Задача работает, но как обьяснить что она делает в функции?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru