You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#阶乘方法调用后返回输入值而非计算结果,求解决方案

问题分析与解决

嗨,别担心,新手踩这种小坑太正常啦!咱们直接揪出问题核心:

你在Fact方法里确实正确计算出了阶乘值,并且把结果存在了number变量里,但最后返回的却是传入的原始字符串参数numFact——这就是为什么输入5时输出还是5的根本原因!

修正后的代码

static void Main(string[] args) 
{
    Console.WriteLine("Type number to do factorial on..");
    var input = Console.ReadLine();
    // 新增输入验证,避免非数字输入导致程序崩溃
    if (int.TryParse(input, out int num))
    {
        var calc = Fact(num);
        Console.WriteLine("The answer is " + calc);
    }
    else
    {
        Console.WriteLine("请输入有效的整数哦!");
    }
}

private static int Fact(int factorialNum) 
{
    var number = 1;
    for (int i = 1; i <= factorialNum; i++) 
    {
        number *= i;
    }
    // 返回计算好的阶乘值,而非原始输入
    return number;
}

关键修改说明

  • 返回逻辑修正:把Fact方法的返回类型从string改为int(阶乘是整数类型,更贴合业务逻辑),同时将返回值替换为计算结果number,彻底解决返回原始输入的问题
  • 输入安全性优化:新增int.TryParse做输入验证,防止用户输入非数字内容时程序直接崩溃,对新手场景更友好
  • 可读性提升:把紧凑的代码拆分为多行,变量名调整为更表意的factorialNum,后续维护或调试会更轻松

另外补充个小提示:如果要计算大于12的数,int类型会出现溢出问题,这时候可以把存储结果的变量类型换成long来支持更大的数值范围哦!

内容的提问来源于stack exchange,提问作者wilfy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:14:34