我正在尝试编写一个程序,该程序将获取用户输入值并询问他们是否要计算数字1到n或n的阶乘值! 这就是我到目前为止所拥有的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Project_2_Part_B
{
class Program
{
static void Main(string[] args)
{
var Fkeylow = "f";
var FkeyCap = "F";
var Skeylow="s";
var SkeyCap="S";
int n = 0;
long factorial = n;
Console.WriteLine("Input a value n");
n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Do you want to calculate factorial or sum");
Console.WriteLine("Enter F or S");
var A = Console.ReadLine();
if (A == Fkeylow)
Console.WriteLine();
if (A == FkeyCap)
Console.WriteLine();
var B=Console.ReadLine();
if (B == Skeylow)
Console.WriteLine();
if (B == SkeyCap)
Console.WriteLine();
Console.WriteLine("Press any key to close...");
Console.ReadLine();
}
}
}
我的问题是使用计算的语法使代码执行n *(n-1)而n> 1 任何帮助将不胜感激。先谢谢你了!
答案 0 :(得分:1)
static void Main(string[] args)
{
Console.WriteLine("Input a value n");
string number = Console.ReadLine(); // read number
int n = Convert.ToInt32(number); // converting to int
Console.WriteLine("Do you want to calculate factorial or sum");
Console.WriteLine("Enter F or S");
string choose = Console.ReadLine(); // F or S
int result = -1; // to view later
if (choose == "f" || choose == "F")
{
result = 1;
for (int i = n; i >= 1; i--) // loop for calculating factorial
result *= i;
}
else if (choose == "s" || choose == "S")
{
result = 0;
for (int i = n; i >= 1; i--) // loop for calculating sum
result += i;
}
Console.WriteLine(result); // printing answer
Console.WriteLine("Press any key to close...");
Console.ReadLine();
}
如果答案对您有帮助,请不要忘记将其标记为最佳答案。
答案 1 :(得分:0)
使用递归是另一种方法:
static void Main(string[] args)
{
int n = 5;
Console.WriteLine(factorial(n));
Console.WriteLine(sum(n));
Console.Read();
}
public static int sum(int n)
{
if(n==0)
return 0;
return n+sum(n-1);
}
public static int factorial(int n)
{
if (n == 1)
return 1;
return n * factorial(n - 1);
}
打印:
120 -->5!
15 -->1+2+3+4+5
答案 2 :(得分: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("Factorial of six is :" + manipulator.factorial(16));
Console.ReadLine();
}
}
class NumberManipulator
{
public int factorial(int num)
{
int result=1;
int b = 1;
do
{
result = result * b;//fact has the value 1 as constant and fact into b will be save in fact to multiply again.
Console.WriteLine(result);
b++;
} while (num >= b);
return result;
}
}
}