I'm trying to convert a while loop to a recursion.
我知道while循环更有效,但我试图理解如何将 for/while 循环转换为递归,并递归到 for/while/if 循环 .
my function as I'm using a while loop:
harmon_sum
n
sum
while (sum < x)
{
sum
n
}
return(n)
}
此函数采用一些数值,假设 x=2 ,并返回您需要求和的谐波和的对象数,以便创建一个比x更大的数字 . (对于x = 2,你需要总结谐波和的第一个 5 对象)
[![harmonic sum][1]][1]
**example**: `harmon_sum
n
sum
while (sum < x)
{
sum
print(sum)
n
print(n)
}
return(n)
}
> harmon_sum(x =2)
[1] 1
[1] 2
[1] 1.5
[1] 3
[1] 1.833333
[1] 4
[1] 2.083333
[1] 5
[1] 5`
my version for the recursive function:
harmon_sum2
if( x<= 0){
return(n-1)
}
else {
x
harmon_sum2(x, n+1)
}
}
这给了我错误的答案 . 我宁愿找到只有一个变量(x)的解决方案,而不是使用两个变量(x,n),但我无法想办法做到这一点 .