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

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的阶乘!请高手指教
...全文
213 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
a42105353frank242 2007-03-09
  • 打赏
  • 举报
回复
谢谢楼上那位朋友,问题解决!!
a42105353frank242 2007-03-08
  • 打赏
  • 举报
回复
那你在主函数里面用!求阶乘 怎么写呢? 我还是觉得你的有问题。你能写具体点吗?谢谢
allen_cn 2007-03-08
  • 打赏
  • 举报
回复
笔误
return g*nn(g-1);
a42105353frank242 2007-03-08
  • 打赏
  • 举报
回复
你的程序不清楚,感觉有错误!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;
}
a42105353frank242 2007-03-08
  • 打赏
  • 举报
回复
楼上那位朋友,我需要用!操作符重载来实现阶乘。还是谢谢你。请朋友门再帮我看看,谢谢!
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());
}
a42105353frank242 2007-03-08
  • 打赏
  • 举报
回复
高手指教啊!!!

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧