3

これは私がこれまでに持っているものです:

namespace factorials
{
    class Program
    {
        static void Main(string[] args)
        {
            int number;

            do
            {
                Console.WriteLine("What non-negative integer do you want to factorial?");
                while (!int.TryParse(Console.ReadLine(), out number))
                    Console.WriteLine("Please enter a whole number only");
                calculate(ref number);
            } while (number >= 0);
            Console.WriteLine("Please enter a non-negative number");

        }
        static void calculate(ref int number)
        {
            int factorial;
            int counter;

            for (counter = number; counter <= number; counter++)
            {
                factorial = number * number;
                Console.WriteLine("The factorial of {0} is {1}", number, factorial);
            }

    }
    }
    }

今のところ、階乗ではなく、数字の2乗を教えてくれます。階乗になるように、入力として回数を繰り返すにはどうすればよいですか?

また、プログラムを負でない整数のみに制限する必要があるかどうかはわかりませんが、その部分が必要な場合は、最初にループバックするのではなく、プログラムをすぐに終了するだけです。

4

8 に答える 8

7

forループはまったく意味がありません!階乗を探している場合は、1から指定された数までのすべての数を乗算する必要があります。それは次のようになります:

int factorial = 1;

for (counter = 1; counter <= number; counter++)
{
    factorial = factorial * counter;

}

Console.WriteLine("The factorial of {0} is {1}", number, factorial);

これにより、1つの数値の階乗が計算されます。あなたはあなたが望むすべての数のためにそれを繰り返さなければならないでしょう。

于 2013-03-04T00:32:06.267 に答える
1

ループは、数値の2乗をループの結果に割り当て、すぐに終了します。結果が1からNまでの数値で繰り返し乗算されるように変更する必要があります。

階乗に1を割り当て、ループ内でカウンターを掛けます。

factorial *= counter;

カウンターを1から始めることを忘れないでください。

于 2013-03-04T00:30:35.520 に答える
0

ヒントをあげます。

  1. 変数を1に初期化します。としましょうAnswer
  2. の操作を実行して、1からNumberへのループを実行しますAnswer = Answer * loopIterationVariable。各反復の後、ループ反復変数を1ずつインクリメントします。
于 2013-03-04T00:31:18.777 に答える
0
    private void btnCalculate_Click(object sender, EventArgs e)
    {
        try
        {
            userinputF = Int32.Parse(txtFaculteit.Text);
            for (counter = 1; counter <= userinputF; counter++)
            {
                answer = answer *=  counter;
            }          
        }
        catch (Exception exception)
        {

                MessageBox.Show("Please fill in a number " + exception.Message);
        }

        lblAnswerFaculteit.Text = lblAnswerFaculteit.Text + "The faculty of " + userinputF + " = " + answer;
    }
}

}

于 2016-10-20T08:24:58.103 に答える
0
        string str = Interaction.InputBox("Enter the number to find the factorial of: ");
        double counter = double.Parse(str);
        long factorial = 1;

        while (counter > 1)
        {
            factorial *= (long)counter--;//factorial = factorial * counter - 1
        }
        MessageBox.Show("The factorial of " + str + " is " + String.Format("{0:N}", factorial));

メソッドのMicrosoft.VisualBasicリファレンスを使用しましたInteraction.InputBox()

于 2013-11-01T23:14:59.520 に答える
0
    int userinputF;
    int counter;
    int answer =1;


    public Form1()

    {
        InitializeComponent();

    }

    private void btnCalculate_Click(object sender, EventArgs e)
    {
        try
        {
            userinputF = Int32.Parse(txtFaculteit.Text);
            for (counter = 1; counter <= userinputF; counter++)
            {
                answer = answer *=  counter;
            }          
        }
        catch (Exception exception)
        {

                MessageBox.Show("Please fill in a number " + exception.Message);
        }

        lblAnswerFaculteit.Text = lblAnswerFaculteit.Text + "The faculty of " + userinputF + " = " + answer;
    }
}

}

于 2016-10-20T08:35:21.613 に答える
0

再帰的な実装と基本的な実装は次のとおりです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication50
{
    class Program
    {
        static void Main(string[] args)
        {

        NumberManipulator manipulator = new NumberManipulator();
        Console.WriteLine("Please Enter Factorial Number:");
        int a= Convert.ToInt32(Console.ReadLine());

        Console.WriteLine("---Basic Calling--");
        Console.WriteLine("Factorial of {0} is: {1}" ,a, manipulator.factorial(a));

        Console.WriteLine("--Recursively Calling--");
        Console.WriteLine("Factorial of {0} is: {1}", a, manipulator.recursively(a));

        Console.ReadLine();
    }
}

class NumberManipulator
{
    public int factorial(int num)
    {
        int result=1;
        int b = 1;
        do
        {
            result = result * b;
            Console.WriteLine(result);
            b++;
        } while (num >= b);
        return result;
    }

    public int recursively(int num)
    {
        if (num <= 1)
        {
            return 1;
        }
        else
        {
            return recursively(num - 1) * num;
        }
    }
  }
}
于 2014-11-16T04:31:35.470 に答える
0
static void Main(string[] args)
    {

        Console.WriteLine("Enter an integer number to factorise");

        int ans = 1;
        int a = int.Parse(Console.ReadLine());

        for (int i = 1; i <= a; i++)
        {
            ans = ans * i;
        }
        Console.WriteLine(ans.ToString());
        Console.ReadLine();             
    }
于 2013-09-30T14:41:50.140 に答える