C#阶乘的递归调用

来源:百度知道 编辑:UC知道 时间:2024/05/18 10:33:25
编写一个递归调用方法求下式的和s ,n的值由用户输入。
s(n)=1!+2!+3!+****+n!

我的代码如下:
using System;
class jiechen
{
static double f(int n)
{ double sum=0.0;
if (n == 1&&n==0) return (1);
else sum+=n*f(n - 1);
return (sum);
}
static void Main()
{
Console.WriteLine("Enter a number:");
int n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("the resualt is {0}", f(n));
}
}
语法没有错误 可是一运行 就没有结果 并给出说遇到什么问题 要关闭
我不知错误到底在哪?如何修改 -_-U
用for我可以做出 但一定要用递归调用
哎把if (n == 1&&n==0) return (1);改为“if (n == 1||n==0) return (1);”虽然解决了运行出问题的问题 但只是求出n!(我上机运行试验了) 如二楼那位兄弟所说

到底要怎样递归调用才能做出呀
顺便也问个问题 用C#编出来的程序能不能在没装有VS的机子上运行?那我们在网上下载的软件是用什么语言编写的?

//建议多写一个方法(还是用递归)
using System;
class jiechen
{
//计算每个数的阶乘,递归函数
static double f(int n)
{
if (n == 1)
return 1;
else
return n*f(n - 1);
}
//计算s(n)=1!+2!+3!+****+n!
static double S(int n){
double total=0;
for(int i=1;i<=n;i++){
total+=f(i);
}
return total;
}
static void Main()
{
while(true){
Console.WriteLine("Enter a number:");
int n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("the resualt is {0}", S(n));
}

}
}

我从新做一下
using System;
class jiechen
{
static double f(int n)
{
if (n == 1||n==0) s=1;
else s=n*f(n - 1);
sum+=s;
return (s);
}
static void Main()
{
double sum=0.0,a,s=1;
Console.WriteLine("Enter a number:");
int n = Convert.ToInt32(Co