引用 | 編輯
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 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: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 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發表的 : 那這樣的話 , 我又有點搞混了 ... 現在這個又變成雖然有呼叫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發表的 :複製程式 #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 |
引用 | 編輯
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 |