如:有两个for循环语句,外循环与内循环的循环次数是否相同?举出例子说得详细一点···
如一个求1!+2!+3!+....+10!的和。int s=0,m=1;
for(int i=1,i<=10,i++)
{for(int j=1,j<=i,j++)
m*=j;
s=s+m;
m=1;}
Console.Write("1!+2!+3!+....+10!={0}",s);
请解释得详细一点,如:当i=1时,j=?,m=?,s=?,.....最好写几个当i改变时,其他变量的变化,谢谢!
如一个求1!+2!+3!+....+10!的和。int s=0,m=1;
for(int i=1,i<=10,i++)
{for(int j=1,j<=i,j++)
m*=j;
s=s+m;
m=1;}
Console.Write("1!+2!+3!+....+10!={0}",s);
请解释得详细一点,如:当i=1时,j=?,m=?,s=?,.....最好写几个当i改变时,其他变量的变化,谢谢!
比如i=2时,内部循环要从j=1开始,循环执行到j=2。。
i=2 ,外循环1次 内循环2次
i=3 ,外循环1次 内循环3次
...
i=10 ,外循环1次 内循环10次
i=2: j=1,j=2
i=3: j=1,j=2,j=3
.........
i=10: j=1,j=2.....j=10
void Good()
{
int sum = 0;
for (int i = 1; i <= 10; i++)
{
int factorial = 1;
for (int j = 1; j <= i; j++)
{
fatorial *= j;
}
sum += fatorial;
}
Console.WriteLine("...");
}void Better()
{
int sum = 0;
for (int i = 1; i <= 10; i++)
{
sum += Fatorial(i);
}
Console.WriteLine("...");
}int Fatorial(int number)
{
int result = 1;
for (int i = 2; i <= number; i++)
{
result *= i;
}
return result;
}
即
int s=0,m=1;
for (int i = 1; i <= 10; i++)
{
for (int j = 1; j <= i; j++)
m *= j;
s = s + m;
m = 1;
}
Console.Write("1!+2!+3!+....+10!={0}",s);
因为外循环只循环一次就够了,内循环就循环n次(依你所要循环的次数而定)。
m*=j-->m=m*j即m*j赋值给m,然后继续s+m赋值給s,即m=1*1;s=0+1;得s=1,这是第一轮循环。1
.....2!s=1*1+1*1*2+.....+10!
然后循环for语句,因为i<=10,所以即得值.或者更容易理解的话:方法2 int s=0,m=1;
for (int i = 1; i <= 10; i++)
{
m *= i;//1=1*1,
s = s + m;//s=0+1;
}
Console.Write("1!+2!+3!+....+10!={0}",s);
第一轮i=1,m*=i即m1=1*1,s=s+m,s=0+1,s=1
第一轮i=2,m*=i即m2=1*2,s=s+m,s=1+1*2,s=3
......
一直到10!
方法3:
using System;
using System.Collections.Generic;
using System.Text;namespace jiecheng
{
class Program
{
static void Main(string[] args)
{
int sum;
sum = jc(1) + jc(2) + jc(3) + jc(4) + jc(5)+jc(6)+jc(7)+jc(8)+jc(9)+jc(10);
Console.Write("10的阶乘为:"+sum.ToString());
Console.Read();
}
static int jc(int m)
{
int n = 1;
for (int i = 1; i <= m; i++)
{
n *= i;
}
return n;
} }
}