可以解释一下 这个代码吗

来源:百度知道 编辑:UC知道 时间:2024/06/23 17:52:40
int div(int n)
{
int i;
int count = 0;
for(i = n ; i > 1 ; i --)
{
if( n % i == 0 )
{
if( n/i != 1)
count += div(n/i);
else
count++;
}
}
return count;
}

呵呵,楼主你粘的这段代码是我写的。
这个是计算一个数可被分解成多少种因数的排列组合。每个数字将被从自己一直到2进行因数分解的尝试,当可以被分解时,将会对分解后的后者(也就是n和i的商)进行判断,如果是1,则证明已经无法分解,对计数器加以,如果不是1,则有可能继续分解,递归该过程。
题目要参考这个,要不然总会认为这段代码有问题。
http://zhidao.baidu.com/question/49083566.html

有点复杂

我觉得这段代码是为了计算n可以由几个不同的因子相乘(如6可以表示为6*1或者2*3),但是如果这样解释,这段代码就有问题,计算中会把相同的因子分解重复计算,期待更好的解释,抛砖引玉下。

是个递归,
count += div(n/i);

找出比输入n值小能整除n的i值,如果i不是自身(n),(n/i)就继续去除i,直到i是自身(n)时,才退出循环