问题:请编写函数foo(int x, int y, int n) 计算:随机生成x个大小为[1,y]的正整数,它们的和为n的概率是多少?
参考代码:
function recursion($x,$y,$n){
if($n<$x || $n>$x*$y){
$tmp[$x][$n] = 0;
}else if($x === 1){
if($y < $n){
$tmp[$x][$n] = 0;
}else{
$tmp[$x][$n] = 1;
}
}
if(isset($tmp[$x][$n])){
return $tmp[$x][$n];
}
$tmp[$x][$n] = 0;
for($i=1; $i<=$y; $i++){
$tmp[$x][$n] += recursion($x-1, $y, $n-$i);
}
return $tmp[$x][$n];
}
function foo($x, $y, $n){
return recursion($x, $y, $n) * 1.0 / pow($y, $x);
}
$sum = 0;
for($i=1;$i<100;$i++){
echo foo(5,10,$i),PHP_EOL;
$sum += foo(5,10,$i);
}
echo 'sum:' . $sum;
看了网上的答案都是直接给代码,表示搞不懂为什么要循环遍历,还要用for循环i从1循环100次。具体希望大神可以从头到脚讲下这个代码的思路。小弟在此十分感谢。
慕丝7291255
梦里花落0921