我是新手,帮我看看这个程序错在哪?

a42105353frank242 2007-03-08 11:12:37
用!操作符重载,求一个书的阶乘,阶乘的写法数学上应该是这样的,例子4!,但是好象!重载后,应该是!4;下面这个程序有错误,帮我看看!
static void Main(string[] args)
{ chong l = new chong(3);
Console.WriteLine("goooooooooood");
Console.WriteLine(!l);
Console.WriteLine("gggggggggg");
}
public class chong
{
public int c;
public chong(int n)
{
c = n;
}
public static int operator !(chong a)
{
int gg=nn(a);
//;
return gg;


}
public static int nn(chong g)
{
int d;

if (g.c == 0)
{ return 1; }
chong n = new chong(g.c--);
Console.Write(n.c);????????(这里打印出来一直是3,所以程序运行的时候,会益处!)
d = (g.c+1) * nn(n);


return d;
}

程序的目的是求3的阶乘!请高手指教
...全文
193 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
谢谢楼上那位朋友,问题解决!!
回复
那你在主函数里面用!求阶乘 怎么写呢? 我还是觉得你的有问题。你能写具体点吗?谢谢
回复
allen_cn 2007-03-08
笔误
return g*nn(g-1);
回复
你的程序不清楚,感觉有错误!return g*nn(*);这个什么意思?
回复
allen_cn 2007-03-08
public static int nn(int g)
{
int d;

if (g == 0 || g == 1)
{ return 1; }
else
{
return g*nn(*);
}
}
回复
allen_cn 2007-03-08
nn方法中直接传值就可以了,为什么要传对象呢
public static int nn(int g)
{
int d;

if (g == 0 || g == 1)
{ return 1; }

chong n = new chong(g.c--);
Console.Write(n.c);????????(这里打印出来一直是3,所以程序运行的时候,会益处!)
d = (g.c+1) * nn(n);


return d;
}
回复
allen_cn 2007-03-08
感觉递归这里写的不清楚
回复
SDFDSAC 2007-03-08
public static int nn(chong g)
{
int d;
if (g.c == 0)
{ return 1; }
chong n = new chong(--g.c); //关键在这里:溢出的原因是原操作chong(g.c--)是个死循环
Console.Write(n.c);
Console.Write("\n"); //分行
d = (g.c + 1) * nn(n);
return d;
}
回复
楼上那位朋友,我需要用!操作符重载来实现阶乘。还是谢谢你。请朋友门再帮我看看,谢谢!
回复
xz_lm_fly 2007-03-08
class Program
{
private int N;
private int result=1;
public int Result()
{
while (N != 0 && N > 0)
{
result = result * (N--);
}
return result;
}
public void SetN(int n)
{
this.N = n;

}

static void Main(string[] args)
{
int x ;
Program p = new Program();
Console.WriteLine("Please input the number(>=0):");
x = Console.ReadLine();
p.SetN(x);
Console.WriteLine (p.Result());
}
回复
高手指教啊!!!
回复
相关推荐
发帖
C#
创建于2007-09-28

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2007-03-08 11:12
社区公告

让您成为最强悍的C#开发者