【问题标题】:Language: C; Compute a series recursive and iterative语言:C;计算一系列递归和迭代
【发布时间】:2013-06-13 20:15:15
【问题描述】:

我目前正在为考试做准备,偶然发现了以下作业:

计算级数(递归和迭代)1-(1/2)+(1/3)-(1/4)+(1/5)...(1/n)。我一般搜索了网络,特别是这个页面,但不幸的是,我只找到了我不理解的基于 java 的解决方案。

所以,请帮帮我:)

到目前为止,我的最大努力只得到了“1.00”的答案:-/

这是我所做的(完整的):

#include <stdio.h>

float reihe_ite(int n); 
float reihe_rek(int n); 

int main(){
        float a,b;
        a=reihe_ite(5);
        b=reihe_rek(5);

        printf("\niterativ: %.2f\nrekursiv: %.2f", a, b); 

        return 0;
}

float reihe_ite(int n){ 
        int i;
        float x=0;
        for(i=1;i<=n;i++){
                if(i%2==0){
                        x=x-(1/i);
                }   
                else{
                        x=x+(1/i);
                }   
        }   
        return x;
}

float reihe_rek(int n){ 
        if(n==1)
                return 1;
        else{
                if(n%2==0){
                        return reihe_rek(n-1)-(1/n);
                }    

                else{
                        return reihe_rek(n-1)+(1/n);
                }   

        }   
}

【问题讨论】:

  • (1/i) 对于i &gt; 1 将始终为 0。不要忘记它是整数计算,所以x/y if x &lt; y 将为0。

标签: c recursion series iteration


【解决方案1】:
x=x-(1/i);

1/i 是整数除法。

用途:

   x=x-(1.0f/i);

对于float 部门

【讨论】:

    猜你喜欢
    • 2020-08-18
    • 2015-05-18
    • 2020-10-07
    • 2021-07-24
    • 1970-01-01
    • 2023-03-09
    • 2012-10-22
    • 1970-01-01
    • 2011-11-14
    相关资源
    最近更新 更多