我被要求仅使用递归来计算以下嵌套的根表达式。
我在下面编写了可行的代码,但他们只允许我们使用一个函数和1个输入n
作为目的,而不是像我以前使用的2个。有人可以帮我将这段代码转换成一个可以计算表达式的函数吗?除了的功能,无法使用任何库<math.h>
。
n = 10的输出: 1.757932
double rec_sqrt_series(int n, int m) {
if (n <= 0)
return 0;
if (m > n)
return 0;
return sqrt(m + rec_sqrt_series(n, m + 1));
}
double helper(int n) {
return rec_sqrt_series(n, 1);
}
如果参数是错误的,我会叫
—
卡兹
abort()
(从<stdlib.h>
),而不是默默地返回0
@chqrlieforyellowblockquotes已转贴。@pastaleg无用的递归如何?
—
chux-恢复莫妮卡
double nested_root(unsigned n) { double x = 0.0; if (n > 0) { x = nested_root(0); for (unsigned i = n; i > 0; i--) { x = sqrt(i + x); } } return x; }
@ chux-ReinstateMonica:是的,更简单地滥用规则。
—
chqrlie
@Oppen:如果分配的目标是资助函数的非递归表达式,则可能不会要求使用“仅递归”来解决问题。当然,一个简单的循环可以轻松地计算出结果。尽管我通常会怀疑这些问题是在没有实际作业文本的情况下发布到Stack Overflow的。
—
埃里克·Postpischil
helper
?