我有一个php递归函数来计算最近的销售价格。但我不知道为什么它运行无限的时间和抛出错误的最大执行。
它的样子如下:
function getamazonsaleper($portal)
{
$cp = floatval($this->input->post('cp')); //user provided inputs
$sp = floatval($this->input->post('sp')); //user provided input
$gst = floatval($this->input->post('gst')); //user provided input
$rfsp = floatval($this->input->post('rfsp')); //user provided input
$mcp = (int)($this->input->post('mcp')); //user provided input
$weight = floatval($this->input->post('weight')); //user provided input
$output = $this->getsalepercent($cp,$sp,$gst,$rfsp,$mcp,$weight,$portal);
return $output;
}
function getsalepercent($cp,$sp,$gst,$rfsp,$mcp,$weight,$portal) //recursive funtion
{
$spcost = ((($sp/100)*$cp));
$gstamount= (($spcost/(100+$gst))*$gst);
$rfspamount= ($spcost*($rfsp/100));
$mcpamount= ($cp*($mcp/100));
$fixedfee=$this->getfixedfee($portal,$spcost);
$weightfee=$this->getweightprice($portal,$weight);
$totalcost=$fixedfee+$weightfee+$rfspamount;
$gstinput=($totalcost*(18/100));
$remittances = $spcost-$totalcost-$gstinput;
$actualprofit= $remittances-$cp-$gstamount+$gstinput;
$actualprofitpercent = ($actualprofit/$cp)*100;
if( $actualprofitpercent >= $mcp)
{
return $sp;
}elseif($actualprofitpercent < $mcp)
{
$newsp = (int)($sp+10) ;
$this->getsalepercent($cp,$newsp,$gst,$rfsp,$mcp,$weight,$portal);
}
}
谁能告诉我如何解决这个问题?提前谢谢。
编辑:
参数
$cp=100;
$sp=200;
$mcp=20;
$weight=0.5;
$gst=28;
$rfsp=6.5;
发布于 2018-08-20 00:55:05
首先是几个附注:
尽管如此,当我使用您给出的$sp = 200 (递增10)的示例值进行了一些计算时,我得到了:
$actualprofit的值,当$cp =100时,它也是$actualprofitpercent的值...
对于$sp = 200:
43.25 - $fixedfee - $weightfee
对于$sp = 210:
50.4125 - $fixedfee - $weightfee
对于$sp = 220:
57.575 - $fixedfee - $weightfee
因此,对于每次$sp = $sp + 10递归,$actualprofitpercent的值(不考虑$fixedfee和$weightfee)似乎增长了7.1625。
$weightfee的值应该保持不变,但$fixedfee的值取决于$sp的值……会不会在每次递归时,getfixedfee()返回一个比7.1625更快的值?
https://stackoverflow.com/questions/51917872
复制相似问题