hackerrank中基本功能挑战的其他测试用例
other text cases for basic function challenge in hackerank
我正在尝试解决 this hackerrank challenge。代码给出了正确的解决方案并通过了基本测试用例,但是,另外两个测试用例失败了。如果这种方法可以通过测试,我们可以使用另一种方法。请协助我通过其他测试用例,在此先感谢。这是我的代码:
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中{}之间包含的代码是在一定条件下运行。通过递归,我们将代码调用为函数中的自包含模块。我们正在使用函数的条件来操纵参数,以创建函数将停止的情况。否则我们将陷入无限循环。
我正在尝试解决 this hackerrank challenge。代码给出了正确的解决方案并通过了基本测试用例,但是,另外两个测试用例失败了。如果这种方法可以通过测试,我们可以使用另一种方法。请协助我通过其他测试用例,在此先感谢。这是我的代码:
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中{}之间包含的代码是在一定条件下运行。通过递归,我们将代码调用为函数中的自包含模块。我们正在使用函数的条件来操纵参数,以创建函数将停止的情况。否则我们将陷入无限循环。