随便给一个由那些数中某几个数的和,那我要怎么样才知道是由哪几个数加的啊??
例如:
给一个数是:6,我就要得到2和4
给一个数是:49,我就要得到是由:1,16,和32
救命啊!!!!
[此贴子已经被作者于2007-4-17 15:58:17编辑过]
namespace caMath
{
class Program
{
static int n = 0;
static int FiNum = 1;
static void Main(string[] args)
{
int inputNum;
while (true)
{
Console.WriteLine("请输入一个数字:");
try
{
inputNum = Convert.ToInt32(Console.ReadLine());
n = 0;
checkNum(inputNum);
Console.WriteLine("{0} 包含的数有:",inputNum);
for(int i = 0 ;i < n ;i++)
{
FiNum = 1;
checkNum(inputNum);
inputNum -= FiNum;
if (inputNum == 0)
{
Console.WriteLine("{0}", FiNum);
break;
}
else if (inputNum != 1 || inputNum != 2)
{
Console.WriteLine("{0}", FiNum);
}
}
}
catch
{
Console.WriteLine("只能输入数字,谢谢!\r\n");
}
}
}
static void checkNum(int num)
{
if (num % 2 == 0)
{
if (num != 0)
{
num /= 2;
n++;
FiNum *= 2;
checkNum(num);
}
}
else
{
checkNum(num - 1);
}
}
}
}