且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

[华为机试练习题]51.数列求和

更新时间:2022-08-12 18:44:18

题目

描述:

题目描述

    编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘。

1+1/2!+ .... +1/n!

计算结果保存在double类型变量中。

接口说明

原型:

void GetResult(int InputNum, double *NumResult);

输入参数:

Int  InputNum:输入一个正整数,进行表达式计算

char *NumResult:输出表达式的值

返回值:

void

练习阶段: 初级

代码

/*---------------------------------------
*   日期:2015-07-04
*   作者:SJF0115
*   题目:数列求和
*   来源:华为机试练习题
-----------------------------------------*/
#include <iostream>
#include "OJ.h"
using namespace std;

 // int溢出 
double fact(int k){
    double result = 1;
    for(int i =1;i<=k;i++){
        result *=i;
    }//for
    return result;
}
/*
void GetResult(int InputNum, double *NumResult);
输入参数:
        Int  InputNum:输入一个正整数,进行表达式计算
        char *NumResult:输出表达式的值     
返回值:
        void

*/

void GetResult(int InputNum, double *NumResult){
    double tmp ,sum = 0.0;
    for(int i = 1;i <= InputNum;i++){
        tmp = 1.0 / fact(i);
        sum += tmp;
    }//for
    *NumResult = sum ; 
}