Javascript 这个程序应该做什么?

Javascript 这个程序应该做什么?,javascript,Javascript,有人能解释一下为什么这个程序不起作用吗 function powerf(base,exp){ if(exp==1) return 1; if(exp % 2 == 0) return powerf(base,exp/2); else return 2*powerf(base,exp-2); } 使用此代码: <body> <p id="x"></p>

有人能解释一下为什么这个程序不起作用吗

function powerf(base,exp){

    if(exp==1)
       return 1;

    if(exp % 2 == 0)    
       return powerf(base,exp/2);

    else 
       return 2*powerf(base,exp-2); 
}
使用此代码:

    <body>
    <p id="x"></p>
    <script>
        function powerf(base, exp) {
         var result = 1;
         while(exp--) {
        result *= base;
        }
  return result;
}
        document.getElementById("x").innerHTML = powerf(2,3);
    </script>
</body>

函数powerf(base,exp){ var结果=1; while(exp--){ 结果*=基数; } 返回结果; } document.getElementById(“x”).innerHTML=powerf(2,3);

此程序应返回如下所示的功率值,例如: powerf(2,3)=>8,但当我运行它时,结果是powerf(2,3)=>2

这是因为,当你说
powerf(2,3)
时,它会转到最后一个
else
部分,变成

powerf(2,3)
->
2*power(2,1)
->
2*1
(因为根据您的逻辑,任何提升到power 1的值都是1)

为什么不干脆

function powerf(base, exp)
{ 
  return Math.pow(base, exp);
}

它应该做什么?什么不起作用?这个程序应该像这样返回功率值,例如:powerf(2,3)=>8,但是当我运行它时,结果是powerf(2,3)=>2当exp为1时,你应该返回base,而不是1。exp为0时返回1我尝试使用此函数,结果也是错误的函数powerf(base,exp){if(exp==1){Return base;}if(exp==0){Return 1;}if(exp%2==0){Return powerf(base,exp/2);}否则返回2*powerf(base,exp-2);}因为我必须在不使用Math的情况下解这个程序。pow:)我应该使用recursion@maryamexp是指数值还是负值?在这种情况下,您还需要为所有这些场景设计逻辑。