C# - 一个函数中的因子和幂

时间:2017-11-15 11:26:55

标签: c#

我有这个基于下拉列表的简单代码,如果选择了Factorial,则键入一个数字并提交并获得相同的权力。 我有

    double x;
    double y;
    double result;
    double m;
    int answer = 1;

    private void factorial(int num)
    {
        for(int x = 1; x <= num; x++)
        {
            answer = answer * x;
        }

    }


    private void pow(double x, double y)
    {
        m = Math.Pow(x, y);
        result = m;

    }

和设计

        if(comboBox1.SelectedIndex == 0)
        {
            int fact;
            fact = int.Parse(textBox1.Text);
            factorial(fact);
            textBox2.Text = answer.ToString();
        }

        if(comboBox1.SelectedIndex == 1)
        {
            x = double.Parse(textBox1.Text);
            y = double.Parse(textBox3.Text);
            pow(x, y);
            textBox2.Text = Convert.ToString(result);
        }

所以,现在我想把pow()和factorial()放到一个函数中并做同样的事情

1 个答案:

答案 0 :(得分:0)

有点乱,但它应该做的工作:

if(comboBox1.SelectedIndex == 0)
    {
        int fact;
        fact = int.Parse(textBox1.Text);
        factorialPow(fact, 0, 0, 0);
        textBox2.Text = answer.ToString();
    }

    if(comboBox1.SelectedIndex == 1)
    {
        x = double.Parse(textBox1.Text);
        y = double.Parse(textBox3.Text);
        factorialPow(0, x, y, 1);
        textBox2.Text = Convert.ToString(result);
    }

private void factorialPow(int num, double x, double y, int selectedIndex)
        {
            switch (selectedIndex)
            {
                case 0:
                    for (int i = 1; i <= num; i++)
                    {
                        answer = answer * i;
                    }
                    break;

                case 1:
                    m = Math.Pow(x, y);
                    result = m;
                    break;
            }
        }

免责声明:我绝不宽恕这种编码,有很多很多方法可以用更清洁,更有效的方法来做到这一点,但就像我说它会做的那样。

修改

我也相信你发布的内容绝对没问题,你可以在你的函数之间添加这个额外的方法,如下所示:

private void factorialOrPow(int num, double x, double y, int selectedIndex)
        {
            switch (selectedIndex)
            {
                case 0:
                    factorial(num);
                    break;

                case 1:
                    pow(x, y);
                    break;
            }
        }