View Full Version : نوشتن زیر مجموعه با تابع بازگشتی
  
gilasse ghermez
سه شنبه 19 آبان 1388, 01:50 صبح
دوستان کسی در مورد نوشتن همه ی زیر مجموعه های یه مجموعه با استفاده از تابع بازگشتی در زبان C میتونه توضیحی واسم بده؟؟ممنون
tdkhakpur
سه شنبه 19 آبان 1388, 11:54 صبح
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#define MaxNums     6
#define MaxCalcNums 3
typedef struct MySt_
{
 int  Nums       [MaxNums];
 int  ResultNums [MaxNums];
 int  cResult ;
 bool Flag       [MaxNums];
} Nums ;
void CalcNums ( int index, Nums nums )
{
 if( index == MaxNums ||  nums.Flag[index] ) return;
//nums.Flag[index] = true;
 nums.ResultNums [ nums.cResult ] = nums.Nums[index];
 nums.cResult ++;
 if( nums.cResult == MaxCalcNums )
 {
   cout<<"\n------------\n";
   for( int i=0; i<nums.cResult ; i++ )
    cout<<nums.ResultNums [i]<<",";
   cout<<" press key..";
   if( getch()==27 ) return;
   return;
 }
 for( int i=0; i<MaxNums ; i++ )
  if( i!=index )
   CalcNums ( i, nums );
}
int main()
{
 Nums nums={0};
 clrscr();
 nums.Nums [0] = 2; nums.Nums [1] = 5; nums.Nums [2] = 3;
 nums.Nums [3] = 4; nums.Nums [4] = 6; nums.Nums [5] = 1;
 for( int i=0; i<MaxNums ; i++ )
  CalcNums ( i, nums );
 return 0;
}
khafan_bat
سه شنبه 19 آبان 1388, 17:58 عصر
بی زحمت یه توضیح در باره ی الگوریتم این کد میدی ؟
tdkhakpur
سه شنبه 19 آبان 1388, 18:49 عصر
من اين كدها رو خيلي وقته نوشتم و آماده بود كه براي شما ارسال كردم.
همانطور كه مشا هم ميدانيد توضيح نحوه اجراي يك الگوريتم اون هم بازگشتي بسيار سخته ولي اين كار با بررسي و خطا انجام ميشه همه اعداد را يك به يك با ساير اعداد در يك سري قرار ميدهد و flag براي بررسي اينه كه عدد مورد پردازش قرار گرفته است تا عدد بعدي مد نظر قرار گيرد.
mortezamsp
سه شنبه 19 آبان 1388, 22:14 عصر
با سلام.
این فقط یک کم تو پرینتش مشکل داره:
void func(int*aray,int n)
{
if(n==0)
cout<<aray[n];
else
{
cout<<aray[n]<<" , "<<aray[n]<<" * { ";
func(n-1);
cout<<" } ";
}
int main()
{
int aray[3]={1,2,3};
func(aray,3-1);
return 0 ;
}
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.