这是一个C语言函数,我理解起来有点麻烦。当我在函数中输入6或10或13的值时,我需要显示r
的值是什么:
int factor(int val){
int r=val-1;
while(val%r){
r--;
}
return r;
}
我不确定我是否误解了这个问题,但其余部分是不是真的?由于0 = false
和while语句永远不会达到0,因为r
总是小于val
并且不等于它,并且每次r
减少,剩余部分会变得更大?< / p>
编辑:刚刚意识到我忘了说6%3 = 0!感谢帮助帮助的人们!
答案 0 :(得分:3)
自己测试:4 % 2
。
结果应为0
,因为%
运算符返回除法的余数。
while(x % y) {}
在此上下文中翻译为:只要x
y
不能被y
分割,就可以执行某些操作,即“做某事”减少{{1}}你的情况。
答案 1 :(得分:2)
本质上,该函数返回该方法输入数字的最大因子。
它转换为“虽然分区中有余数(r
不是val
的因子),但将r减1并再次检查。一旦找到干净因子({{1 }}),返回因子(val % r is 0
)。
这是一个带有示例输出的JavaScript端口:
我在JS中重写了它,您可以取消注释r
行以查看6,10和13的输出