c - 有和没有递归的序列

标签 c recursion recurrence

我有一个序列。

a1 = 1 - cos(x);
ai = a1 + (-1)^(i-1) * x^(2*i-2) / (2*i-2)!

我需要用递归和不用递归来写这个。但却有不同的结果。
这是我的代码:http://codepaste.net/q213q6

最佳答案

我将假设这是作业,如果我错了,我会回来编辑这篇文章或重新发布。

首先,您应该尝试以尾递归方式编写阶乘函数。虽然它在 C 中可能不会有太大区别,但这是一个很好的实践。

int helper( int x, int acc ) {
    if( x == 0 ) {
        return acc;
    }
    else {
      return helper( x - 1, acc * x );
    }
}

int factorial( x ) {
  helper( x, 1 );
}

接下来,您通常不想在递归函数中放置循环,这在某种程度上违背了这一点。将递归调用视为带有测试和返回或调用的一次迭代。

关于c - 有和没有递归的序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2427027/

相关文章:

Coq 中的双重归纳

algorithm - 递归关系,分析算法

c - 整数数组的按位异或和移位

c - 无法打开文件 C

python - 从递归函数导出封闭形式

java - 数独求解器的算法复杂度 (Big-O)

algorithm - 使用动态规划实现事件选择问题

c - 我怎样才能在不使用数组的情况下重写这段代码?

java - 新创建的对象是否给我内存位置或保存新分配的内存位置地址的指针

python - 递归取款和存款