C# FOR循环 穷举问题
灵感来自于一道习题:编一个程序,把一张1元的钞票换成5分,2分和1分的硬币,要求每种至少一枚,并且所换硬币数不超过30枚。请问,有哪几种换法?我用FOR做了出来,如图1....
灵感来自于一道习题:编一个程序,把一张1元的钞票换成5分,2分和1分的硬币,要求每种至少一枚,并且所换硬币数不超过30枚。请问,有哪几种换法?我用FOR做了出来,如图1.之后碰到了一一道这样的题:编一个程序,输入一个正整数n,把它转换为二进制数,并输出。从上一道题的启发,我想利用FOR循环 进行穷举,让2^n 的数 相加,哪些数相加能等于答案,就输出这个数(图2是二进制转十进制,现在我要使用的是这个方法的逆向思维.).谢了九个循环 然后把自己给干沉了,希望大神能指点迷津.当然我是要以我这个思路进行下去,哪怕没有实用价值,只是一个思路问题.(图3为现在的半成品)希望大神可以帮忙理清思路.万分感谢.
展开
1个回答
展开全部
有内置的转换二进制的。Console.WriteLine(Convert.ToString(26, 2));
for确实太多了,如果可以改成递归吧。给个方法你,你在控制台下调用就行。返回的是个字符串。
static String ToBinary(Int32 num)
{
//求商
Int32 merchant = num / 2;
//求余数
Int32 remainder = num % 2;
if (merchant == 0)
{
return remainder.ToString();
}
else
{ //商数不为0,继续递归
return ToBinary(merchant) + remainder;
}
}
for确实太多了,如果可以改成递归吧。给个方法你,你在控制台下调用就行。返回的是个字符串。
static String ToBinary(Int32 num)
{
//求商
Int32 merchant = num / 2;
//求余数
Int32 remainder = num % 2;
if (merchant == 0)
{
return remainder.ToString();
}
else
{ //商数不为0,继续递归
return ToBinary(merchant) + remainder;
}
}
追问
谢谢,已经不再试图用FOR了,钻牛角尖了,今天正好学习到递归,您的方法很有用!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询