孟德尔 分配 规律 递归思想输出

2016-06-18  本文已影响20人  LuckTime

以下程序 不对,仅供思路思考。。用二叉树比较好
/*

include<iostream>

using namespace std;

int twin(int n);

int main()
{
int b[20];
int n;
int i;//起始值
cin>>n;
cout<<twin(n)<<endl;

}
int twin( int n ) //双重递归
{
int a[1];
a[1] = 3;
if(n > 0 && n == 1)
return a[1];
else
{
return a[1]*twin(n-1);

}

*/

include<iostream>

using namespace std;

int twin02a(int n);
int twin02b(int n);
int twin03(int n);
int mendel(int n,int i);

int main()
{
int n ,i=0 ;
int j;
int c;
cin >> n;
c = twin03(n); //形状比个数
cout<<c<<endl;
for(j = 0;j < c ;j++)
{
cout<<mendel( n, i )<<endl;;
--n;
}//cout << twin02a(n) << endl;
//cout<< twin02b <<endl;
}
int twin02a( int n ) //第二层递归
{
//int b[n*n];
//int i=0;

/*if(n >= 0 && n == 2)
return 3;
  */

if(n==1)
return 1;
else
{
// for(int i=0; n-i>0 ; i++)
return 3 * twin02a(n - 1) ;//* twin(i);
//cout<<"1"<<endl;
}
}

int twin02b( int i )
{

//int b[n*n];
//int i=0;

/*if(i >= 0 && i == 1)
return 1;
*/
  if(i==0)
  return 1;
else
{
//  for(int i=0; n-i>0 ; i++)
    return 1 * twin02b(i - 1) ;//* twin(i);
//cout<<"1"<<endl;
}

}

int mendel(int n,int i)
{
//if(n==1)
//cout<< twin02b(1) << ":" << twin02a(1) <<endl;
//else
{
return twin02a(n - i) * twin02b(i);
i++;
}
}

// 个数为2^n

int twin03(int n)
{
if(n==1)
return 2;
else
{
return 2 *twin03(n-1);
}

}

上一篇下一篇

猜你喜欢

热点阅读