引用 | 编辑
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); } } } 若是 要回传的话,再改一下吧 ^^ ![]() |
引用 | 编辑
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;} ![]() |
引用 | 编辑
GNUGCC
2007-06-22 23:34 |
10楼
▲ ▼ |
void addsum(int i);
{ value=value+i; } 函式名称后面不要加分号... 即然函式要求不可用回圈的话虽然回圈改在 main() 函式不过可以用递回试看看... ![]() |
引用 | 编辑
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); } ![]() |
引用 | 编辑
gamewalk
2007-06-24 13:05 |
13楼
▲ ▼ |
你现在这个 , 没有做到累加的动作 , 反而是代公式 ....应该是不符合 , 至于你的上一个 用到了回圈应该也是不符合 , 我也赞成他们讲的用递回的方式 ...
![]() |
引用 | 编辑
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); } ![]() |
引用 | 编辑
gamewalk
2007-06-25 02:54 |
16楼
▲ ▼ |
恩...这就是递回...这样应该就可以了吧...不过有一点蛮那闷的你标题为什么写"变数等级的问题"? 你们老师还有开其他条件吗?
![]() |
引用 | 编辑
karen7710
2007-06-25 19:17 |
17楼
▲ ▼ |
因为这章在讲变数等级~这是这章里的题目!
老师有给个提示:在主程式main中呼叫自定函式100次,然后在main中将结果印出 那我上面那个程式就有符合这个了吗? ![]() |
引用 | 编辑
gamewalk
2007-06-25 22:50 |
18楼
▲ ▼ |
下面是引用karen7710于2007-06-25 19:17发表的 : 那这样的话 , 我又有点搞混了 ![]() 我想如果说是在main中,可以用回圈,在函式中不能用回圈 那应该就是这样了吧...然后再由你老师的提示 在main中呼叫100次... 复制程式 int AddSum(int Num) { static int Sum = 0; Sum = Sum + Num; return Sum; } 记住因为Sum是静态变数 所以他的执会一直保留到程式结束为止...所以这样是可以做累加的... ![]() |
引用 | 编辑
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; } ![]() |
引用 | 编辑
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)); 应该是这样吧... ![]() |
引用 | 编辑
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(); } 用递回的方式解 不知道是不是正解 >"< ![]() |