第1个回答 2007-10-21
楼主要注意逗号和分号的用法:语句要求用分号结尾,逗号是运算符。
{i++;sum=sum+i;}和{sum=sum+i;i++;}主要是运算顺序不同,循环语句可能不同
i++,sum=sum+i;和sum=sum+i,i++;区别就太大了
求1+2+3+...+100=?
i=0;sum=0;
(1)while(i<100){i++;sum=sum+i;}printf("sum=%d\n",sum);
(2)while(i<=100){sum=sum+i;i++}printf("sum=%d\n",sum);
(3)while(i<100){i++,sum=sum+i;}printf("sum=%d\n",sum);
(4)while(i<=100){sum=sum+i,i++;}printf("sum=%d\n",sum);
(1)输出5050
(2)输出5050
(3)输出5050
(4)输出100
第2个回答 2007-10-22
这个不叫递归的
递归算法一般用在调用函数的
还有在 while(i<=100)这样的条件下
{ i++ ,sum=sum+i} 和{ sum=sum+i,i++}之间是有区别的
但是退出循环后i都是等于101,拜托1楼2楼两位大虾说清楚 还有3楼的4个式子得出的结果都是一样的
不要再炫你那逗号和分号的用法
4楼的你能在条件为while(i<100)时,i自增到101?那你不是一般的厉害
只不过计算sum时
while(i<=100)
前面的会计算到sum=sum+101 当i=100时 是先自增再sum=sum+i的
后面的会计算到sum=sum+100 当i=100时 先sum=sum+i,然后再自增 判断条件 不符合退出循环了
第3个回答 2007-10-21
不要乱说递归,你这个不是递归,只是一个简单的条件循环,循环体每执行完一次进行一次条件判断
两种写法都可以,但是最后退出循环的条件是不同的,前一个i=100就退出,后一个要i=101才退出
一般都用第一种写法,比较易懂
第4个回答 2007-10-22
不要乱说递归,你这个不是递归,只是一个简单的条件循环,循环体每执行完一次进行一次条件判断
第5个回答 2007-10-22
你说的不是递归,递归是指函数自己调用自己来完成任务。1+2+...+100的任务如果用递归算法,可以这样写:
int sum(int n){
if (n==1) return 1;
else
return n+sum(n-1);//这里就是sum调用sum,不过参数
//不一样,意思是返回n和(前n-1个数的和)的和,即n个
//数的和。
}
void main(){
int i=100;
printf("%d",sum(i));
}
这样就可以了
该程序在tc下运行的结果是:
5050