关于C++算 法的问题

[复制链接]
查看11 | 回复3 | 2009-10-23 19:54:20 | 显示全部楼层 |阅读模式
while后面括号中的v2就是v2!=0的意思v2!=0是一个表达式,它的值是整个表达式的值,即当v2等于0时值为0,v2不等于0是值为非零看似while是根据v2!=0这个表达式的逻辑值判断真假的,其实它只根据括号内表达式的值(0或非0)来判断,这样所以只写v2也是可以的,这样它就根据v2的值是0还是非0选择执行还是不执行另外,专业人员都是while(v2)这样写的,楼主只要多看些程序就知道了
回复

使用道具 举报

千问 | 2009-10-23 19:54:20 | 显示全部楼层
v2=v1%v2;关键在于这一句,如果v1大于且不能整除v2,那么经过这句后就把v1除以v2的余数赋值给v2,此时v2不为零,并且把原来的v2赋值给v1,再次循环,以此类推即可,例如,v1=7,v2=6,则第一次循环结束后v1=6,v2=1,所以第二次循环的时候,v1%v2就等于0,此时v1等于1,即最大公约数是1,同理可以推理验证其它情况。对于while(v2),你的理解是正确的
回复

使用道具 举报

千问 | 2009-10-23 19:54:20 | 显示全部楼层
算法是不依赖于某种特定语言的。书籍就看《算法导论》吧
回复

使用道具 举报

千问 | 2009-10-23 19:54:20 | 显示全部楼层
我想楼主对 while(V2) 应该理解了在这里就不多说了至于 int temp=v2;
v2=v1%v2;
v1=temp;其实是 高的代数 里的“辗转相除”法,打字说不清楚的,你百度下 辗转相除 应该有详细的解释
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行