關於變數等級的問題~

Home Home
引用 | 編輯 karen7710
2007-06-20 17:37
樓主
推文 x0
題目:
請計算1加到100的結果,累加運 ..

訪客只能看到部份內容,免費 加入會員



獻花 x0
引用 | 編輯 GNUGCC
2007-06-21 00:19
1樓
  
這個好像是要用遞迴來寫...

獻花 x0
引用 | 編輯 karen7710
2007-06-21 08:09
2樓
  
可是題目限制不可以使用迴圈>"<

獻花 x0
引用 | 編輯 海洋天使
2007-06-21 08:31
3樓
  
遞迴不算是迴圈吧XD

獻花 x0
引用 | 編輯 karen7710
2007-06-21 19:02
4樓
  
喔喔= =" 表情

獻花 x0
引用 | 編輯 a86980
2007-06-22 10:21
5樓
  
不用迴圈

那就要用到goto指令

獻花 x0
引用 | 編輯 karen7710
2007-06-22 13:08
6樓
  
那大概要怎麼用呢? 表情

獻花 x0
引用 | 編輯 anemailbox2
2007-06-22 13:34
7樓
  
上底加下底*高/2,
只是這沒有用到累加,

用遞迴蠻不錯的,
可以訓練遞迴的跳出控制。

我只會java

public class HelloRecurse {
  int sum=0;

  public void sumXToZ(int x, int z){
    sum = sum+x;
    x++;
    if(x> z){
      System.out.println("total:" + sum);
      return;
    }else{
      sumXToZ(x, z);
    }
  }
}

若是 要回傳的話,再改一下吧 ^^

獻花 x0
引用 | 編輯 karen7710
2007-06-22 13:49
8樓
  
看不太懂耶= =" 表情

獻花 x0
引用 | 編輯 karen7710
2007-06-22 19:17
9樓
  
以下我打的這個程式無法正常的跑,不知道哪出了問題?
還有這個程式有符合題目所要求的嗎?
複製程式
#include <stdio.h>
#include <stdlib.h>
void addsum(int);
static int value=0;
 
int main(void)
{
    int i;
    for(i=1;i<=100;i++)
     addsum(i);
    printf("%d\n",value); 
    system("pause");
    return 0;
    }
void addsum(int i);
{       
  value=value+i;} 


獻花 x0
引用 | 編輯 GNUGCC
2007-06-22 23:34
10樓
  
void addsum(int i);
{  
value=value+i;
}

函式名稱後面不要加分號...
即然函式要求不可用迴圈的話雖然迴圈改在 main() 函式不過可以用遞迴試看看...

獻花 x0
引用 | 編輯 karen7710
2007-06-24 10:15
11樓
  
那我寫的那個就不符合題目所要的囉? 表情

獻花 x0
引用 | 編輯 karen7710
2007-06-24 10:23
12樓
  
那這個程式,跟上一個哪個比較符合題目呢?
複製程式
#include <stdio.h>
#include <stdlib.h>
void addsum(void);
 
int main(void)
{
    addsum(); 
    system("pause");
    return 0;
    }
void addsum(void)
{
  int sum;   
  sum=((1+100)*100)/2;
  printf("sum=%d\n",sum);
  }


獻花 x0
引用 | 編輯 gamewalk
2007-06-24 13:05
13樓
  
你現在這個 , 沒有做到累加的動作 , 反而是代公式 ....應該是不符合 , 至於你的上一個 用到了迴圈應該也是不符合 , 我也贊成他們講的用遞回的方式 ...

獻花 x0
引用 | 編輯 karen7710
2007-06-24 14:58
14樓
  
遞迴的方式要怎麼用呢? 表情 可以大概講一下嗎?

獻花 x0
引用 | 編輯 karen7710
2007-06-24 17:15
15樓
  
遞迴的方式是這樣嗎?
這個有符合了嗎?
複製程式
#include <stdio.h>
#include <stdlib.h>
int answer(int);

int main(void)
{

printf("sum=%d\n",answer(100));

system("pause");
return 0;
}
int answer(int x)
{
if ( x == 1 )
 return 1;
else 
return x + answer(x - 1);
}   


獻花 x0
引用 | 編輯 gamewalk
2007-06-25 02:54
16樓
  
恩...這就是遞迴...這樣應該就可以了吧...不過有一點蠻那悶的你標題為什麼寫"變數等級的問題"? 你們老師還有開其他條件嗎?

獻花 x0
引用 | 編輯 karen7710
2007-06-25 19:17
17樓
  
因為這章在講變數等級~這是這章裡的題目!
老師有給個提示:在主程式main中呼叫自定函式100次,然後在main中將結果印出
那我上面那個程式就有符合這個了嗎?

獻花 x0
引用 | 編輯 gamewalk
2007-06-25 22:50
18樓
  
下面是引用karen7710於2007-06-25 19:17發表的 :
因為這章在講變數等級~這是這章裡的題目!
老師有給個提示:在主程式main中呼叫自定函式100次,然後在main中將結果印出
那我上面那個程式就有符合這個了嗎?

那這樣的話 , 我又有點搞混了 表情 ... 現在這個又變成雖然有呼叫100次但是 是遞回呼叫 只有第一次是在main中呼叫 其他都不能算是在main呼叫 ...

我想如果說是在main中,可以用迴圈,在函式中不能用迴圈 那應該就是這樣了吧...然後再由你老師的提示 在main中呼叫100次...

複製程式
int AddSum(int Num)
{
    static int Sum = 0;
    Sum = Sum + Num;
    return Sum;
}

記住因為Sum是靜態變數 所以他的執會一直保留到程式結束為止...所以這樣是可以做累加的...

獻花 x0
引用 | 編輯 karen7710
2007-06-26 19:06
19樓
  
為什麼我打的這個程式出來的答案是5110?
複製程式
#include <stdio.h>
#include <stdlib.h>
int addsum(int);

int main(void)
{
  int i,sum;
  for(i=1;i<=100;i++)
   addsum(i);
  printf("%d\n",addsum(sum)); 
  system("pause");
  return 0;
  
}
int addsum(int i)
{
  static int Sum = 0;
  Sum = Sum + i;
  return Sum;
}


獻花 x0
引用 | 編輯 gamewalk
2007-06-27 02:39
20樓
  
下面是引用karen7710於2007-06-26 19:06發表的 :
為什麼我打的這個程式出來的答案是5110?
複製程式
#include <stdio.h>
#include <stdlib.h>
int addsum(int);

int main(void)
{
int i,sum; //<---應該是你這沒給初值,記住這裡的sum跟addsum裡的sum不一樣
for(i=1;i<=100;i++)
  addsum(i);
printf("%d\n",addsum(sum)); //<-你這裡多加了一個sum ,最後你要印出來你就把這裡改成addsum(0)
system("pause");
return 0;

}
int addsum(int i)
{
static int Sum = 0;
Sum = Sum + i;
return Sum;
}

printf("%d\n",addsum(sum)); 改成 printf("%d\n",addsum(0));
應該是這樣吧...

獻花 x1
引用 | 編輯 karen7710
2007-06-27 18:59
21樓
  
嗯嗯,原來如此,謝謝大大的解答^^ 表情

獻花 x0
引用 | 編輯 kioko
2009-09-15 15:14
22樓
  
複製程式
#include <stdio.h>
#include <iostream> 
#include <stdlib.h> 
#include <conio.h>
#include <string>
using namespace std ; 
int addsum(int x, int y){ 
       static int sum; 
       static int count;
       if(x<=y){
              sum=sum+x; 
              count++; 
              addsum(count,y); 
       }
       else{
              printf("加總為: %d",sum);
       }       
} 
main (){
       addsum(1,100);
       getch();       
}

用遞迴的方式解
不知道是不是正解 >"<

獻花 x0