当前位置:编程学习 > C#/ASP.NET >>

求1,3,6,10,15,21……的和

<form action="http://192.168.16.20" method="post">
<input type="text" name="myn" >
<input type="submit" value="计算" name="myn" >
</form>


<%
dim i,j,t,s,n
s=0
n=request.form("myn")
for i=1 to n
for j=1 to i
t=0
t=t+i
next
s=s+t
next
response.write s

%>


本题目:(求1,3,6,10,15,21……的和),本题目调试不出来,请求各位侠人了。 --------------------编程问答-------------------- 发错地方了,这是 vb 吧 --------------------编程问答-------------------- t=0
for i=1 to n
t+=i
next --------------------编程问答-------------------- t=0
for i=1 to n
t+=i
next --------------------编程问答-------------------- 这是算法问题,算法问题和语言没什么关系 

int x = 6;
        int sum = 0;
        int count = 1;
        int s = 0;
        for(int  i =1; i <= x; i++)
        {
            sum += count;
            s += sum;
            count = count + 1;
        }
        Response.Write(s);

还可以优化一下 --------------------编程问答-------------------- 递归。。
i+fn(i-1) --------------------编程问答-------------------- 看着像作业。。。 --------------------编程问答-------------------- int x = 6;
  int sum = 0;
  int count = 1;
  int s = 0;
  for(int i =1; i <= x; i++)
  {
  sum += count;
  s += sum;
  count = count + 1;
  }
  Response.Write(s);
--------------------编程问答-------------------- 你输入myn的是数列的项数,还是最后一项,在你的例子里,1,3,6,10,15,21……,是项数6项,还是最后的21? --------------------编程问答-------------------- 另外,你的页面布局里有重名name="myn" --------------------编程问答--------------------
引用 6 楼 huanshayi 的回复:
看着像作业。。。

是啊 --------------------编程问答-------------------- 这个用c#写是不如vb --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------
引用 5 楼 jianshao810 的回复:
递归。。
i+fn(i-1)


right --------------------编程问答-------------------- C#的可以参考下

   protected void ASPxButton1_Click(object sender, EventArgs e)
        {
            int num =Convert.ToInt32(this.ASPxTextBox1.Text);
            int count = 0;
            int sum = 0;
            for (int i = 1; i <= num; i++)
            {
                count += i;
                sum +=count;
            }
            this.ASPxTextBox2.Text = sum.ToString();
        }
--------------------编程问答-------------------- sum=n*(n+1)*(n+2)/6
--------------------编程问答-------------------- n
是从1开始的数字个数 --------------------编程问答-------------------- 就是后面减去前面得2、3、4、5、6、7、8这样一个算法吗?自己去写不就行了 --------------------编程问答--------------------
引用 16 楼 zyf850 的回复:
sum=n*(n+1)*(n+2)/6

这才是正解
--------------------编程问答-------------------- --------------------编程问答--------------------
引用 16 楼 zyf850 的回复:
sum=n*(n+1)*(n+2)/6

 可以。。。 --------------------编程问答-------------------- 测试已通过
<%
  dim n
  dim i
  dim j
  dim result
  
  n=request.form("myn")
  j=1
  result=0

  for i=1 to n
    result=result+j
    j=(i+1)+j
  next
  
  response.write("1+3+6+10+......="+cstr(result))

%>

j表示数列的某一项;j=(i+1)+j在前一项基础上增加(i+1),供下一次循环时使用 --------------------编程问答--------------------

int GetSum(int n)
{
int nSum = 0, nLast = 1;
for (int i = 0; i < n; i++)
{
nSum += nLast;
nLast += i + 2;
}
return nSum;
}
--------------------编程问答-------------------- --------------------编程问答-------------------- 1,3,6,10,15,21 ...
1 = 1
3 = 1 + 2
6 = 1 + 2 + 3
10 = 1 + 2 + 3 + 4
15 = 1 + 2 + 3 + 4 + 5
...

明白了吧。

function int _sum (int n)
{
  int sum = 0;
  for (int i = 1; i <= n; i++)
  {
    for (int j = 1; j <= i; j++)
    {
      sum = sum + j;
    }
  }

  return sum;
}

static void main()
{
  int s = _sum(10);
} --------------------编程问答--------------------
引用 25 楼 sugarforever 的回复:
1,3,6,10,15,21 ...
1 = 1
3 = 1 + 2
6 = 1 + 2 + 3
10 = 1 + 2 + 3 + 4
15 = 1 + 2 + 3 + 4 + 5
...

function int _sum (int n)
{
  int sum = 0;
  for (int i = 1; i <= n; i++)
  {
  fo……


这不是面试题么? --------------------编程问答-------------------- php版

<?php
$sum = 0;
for($i=0,$n=5;$i<$n;$i++){
$sum += ($n-$i)*($i+1);
}
echo $sum;
--------------------编程问答-------------------- 不好意思!贴发多余了 --------------------编程问答--------------------

  function a(n) {
             if (n == 0)
                return 0;
            return n + a(n - 1);
        }
--------------------编程问答-------------------- 以后作业不会做都可以在这里发布 --------------------编程问答-------------------- 数列求和,有公式的,直接用公式就可以算出来了。 --------------------编程问答-------------------- 用C#写了一段:

int arrLength;
            int sum = 0;
            int a = 1;
            int b = 3;

            Console.Write("请输入数组元素的数目:");
            arrLength = int.Parse(Console.ReadLine());

            if (arrLength == 1)
            {
                sum = 1;
                Console.WriteLine("数组元素为:{0}",a);
                Console.WriteLine(sum);
            }
            else if (arrLength==2)
            {
                sum=4;
                Console.WriteLine("数组元素为:{0}, {1}", a, b);
                Console.WriteLine(sum);
            }
            else if (arrLength>2)
            {
                sum = a+b;
                Console.Write("数组元素为:{0}, {1}", a, b);
                for (int i = 2; i < arrLength; i++)
                {
                    int temp = b;
                    b = b + ( b - a + 1);
                    a = temp;
                    sum = sum + b;
                    Console.Write(", {0}",b);
                }
                Console.WriteLine();
                Console.WriteLine("数组元素的总和是:{0}。",sum);
                Console.ReadLine();
--------------------编程问答--------------------
引用 22 楼 from_taiwan 的回复:
测试已通过
<%
  dim n
  dim i
  dim j
  dim result
  
  n=request.form("myn")
  j=1
  result=0

  for i=1 to n
  result=result+j
  j=(i+1)+j
  next
  
  response.write("1+3+6+10+......="+cs……

如何设置循环次数别太大,更好的控制n的值? --------------------编程问答--------------------

//引用楼上的代码
/*
1,3,6,10,15,21 ...
1 = 1
3 = 1 + 2
6 = 1 + 2 + 3
10 = 1 + 2 + 3 + 4
15 = 1 + 2 + 3 + 4 + 5
...
终上可看出每项都是由一个等差数列的和(,此有多种算法,这只是其中的一种算法)
*/

function int _sum (int n)
{
  int sum = 0;
  for (int i = 1; i <= n; i++)
  {
 /* for (int j = 1; j <= i; j++)//这个for是多余的,影响性能,应直接用等差数列求和公式
  {
  sum = sum + j;  //Sn=n(a1+an)/2 或Sn=a1*n+n(n-1)d/2这是公式 
  }*/
  Sum+=j*(1+j)/2;
  }

  return sum;
}

static void main()
{
  int s = _sum(10);
}
--------------------编程问答-------------------- 如何设置循环次数别太大,更好的控制n的值?
在提交表单里控制
(1)<input type="text" name="myn" maxlength="2">
或者(2)<input type="text" name="myn" id="myID" onblur="return jsfun();" />
<script type="text/javascript">
   function jsfun()
   { 
      if(document.getElementById("myID").value>20)//设定不超过20,由你自己定了
      {
         alert("请输入不大于20的数字");
         document.getElementById("myID").value="";
        
      }

   }
  </script>
这回可以了哇 --------------------编程问答-------------------- (1)<input type="text" name="myn" maxlength="2">
限制为两位数,即最大99
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,