Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2011, 21:36   #1
rublyabachka
Пользователь
 
Аватар для rublyabachka
 
Регистрация: 12.12.2011
Сообщений: 31
Радость Рекурсия (С)

Задача состоит в следующем: получить все размещения из 9ти {n} элементов (1,2,..,9) по 5 {k} элементов в каждом.
По формуле нахождения размещений (после некоторых преобразований) следует: A=15120 размещений.

А(из 9 по 5)=9!/(9-5)!

Код:
int main()
{int up (int n )  //вычисление 9!(факториал)
 {
  int res;
  switch ( n )
   {
    case 0: case 1: res = 1;      
            break;
    default: res = n * factorial (n-1);
   }
  return res;
 }
a=n-k;    //вычисление (9-5)=4
int down (int a )  //вычисление 4!
 {
  int res1;
  switch ( a )
   {
    case 0: case 1: res1 = 1;    
            break;
    default: res1 = a * factorial (a-1); 
   }
  return res1;
 }
int kol=up/down; //вычисление кол-ва элементов=15120
}
Я написала только как вычислить кол-во элементов, а как сделать их перебор не могу даже вообразить...
Возможны ошибки, так как я студентка 1го курса и не внимательная личность.
Помогите, пожалуйста!
rublyabachka вне форума Ответить с цитированием
Старый 15.12.2011, 02:11   #2
rublyabachka
Пользователь
 
Аватар для rublyabachka
 
Регистрация: 12.12.2011
Сообщений: 31
По умолчанию

Код:
#include <stdio.h>
#include <conio.h>
int main()
{   
	int a, n=9, k=5, res, res1;
	int up(int n);
	a=n-k;    //вычисление (9-5)=4
	int down(int a);
	int u=up(n);
	int d=down(a);
	int kol=u/d; //вычисление кол-ва элементов=15120
	printf("%d", kol);
	getch();
} 
int up (int n=9 )  //вычисление 9!(факториал)
 {
  int res;
  switch ( n )
   {
    case 0: case 1: res = 1;      
            break;
    default: res = n * up (n-1);
   }
  return res;
 }
int down (int a )  //вычисление 4!
 {
  int res1;
  switch ( a )
   {
    case 0: case 1: res1 = 1;    
            break;
    default: res1 = a * down (a-1); 
   }
  return res1;
 }
вернее так... но это не решает мою задачу полностью
rublyabachka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
рекурсия biowoooooolf Паскаль, Turbo Pascal, PascalABC.NET 0 15.03.2011 15:29
Рекурсия shedi Общие вопросы C/C++ 0 28.02.2011 22:47
Рекурсия dusya9992 Паскаль, Turbo Pascal, PascalABC.NET 4 29.08.2010 14:14
рекурсия Lena neznayka Помощь студентам 2 16.06.2010 20:46