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

题目

描述:

题目描述

    编写程序,输入一个正整数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 ; 
}

你可能感兴趣的:(华为机试练习题)