[英]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.