簡體   English   中英

hackerank 中基本 function 挑戰的其他文本案例

[英]other text cases for basic function challenge in hackerank

我正在嘗試解決這個hackerrank挑戰。代碼給出了正確的解決方案並通過了基本的測試用例,但是,另外兩個測試用例失敗了。 如果這種方法可以通過測試,我們可以使用另一種方法。 請幫助我通過其他測試用例提前謝謝。 這是我的代碼:

function factorial(n){
    let myNum = n;
    let res;

    if(myNum === n){
        res = myNum * (n -1);
        myNum = n - 1; 
    }

    if(myNum > 0){
        res = res * (myNum - 1);
        myNum --;
    }
    return res;
}

我真的不喜歡階乘算法的遞歸。

while 循環運行良好。 對於階乘,主要情況是當 n 大於 0 時我們仍在運行方程,所以 1 是我們要相乘的最后一個數字。 這是因為我們知道一旦我們的迭代為 1,我們想要停止算法並且最后一個數字將保持為階乘。

function factorial(n){
var product = 1
while(n > 0){
    product = product * n
    n = n -1
}
return product  
}

如果您要進行遞歸,則需要有一個基本案例,您需要考慮最容易解決的階乘。 所以 factorial(2) 是最小的階乘數。 如果階乘是 1,我們不想再做減法,因為任何乘以 0 的東西都是 0。

最終方程或基本情況將是 n * 1。

所以這將是遞歸算法的基本情況。

function factorial(n){
   if (n == 1){
    return n
   }else{
     return n * factorial(n -1)
   }

}

遞歸和循環在循環中的工作原理相似,JS中{}之間包含的是在一定條件下運行的代碼。 通過遞歸,我們將代碼調用為 function 中的自包含模塊。 我們正在使用函數的條件操作參數以創建 function 將停止的情況。 否則我們將陷入無限循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM