我正在尝试使用C编程计算e ^ 1(输入容差级别)这可行但是由于某种原因我得到了错误的输出:
exp为0.000100容错:2.000000
exp为0.000000错误容差:2.000000
exp为0.000000错误容差:2.000000
exp为0.000000错误容差:2.000000
有什么想法吗?
#include <stdio.h>
#include <stdlib.h>
//this function creates factorial of n
int myfac(n)
{
if (n <= 1) return 1;
return n*myfac(n - 1);
}
void myexp(float error)
{
int n = 0;
float value = 0;
//n, n being used for recursion
//error, user input error for tolerance
//value, exp being returned as an answer
//nextvalue, value at n+1
while(1/myfac(n) >= error)
{
value = value + 1 / myfac(n);
n = n + 1;
}
printf("The exp to %f error tolerance: %f \n", error, value);
}
void main()
{
myexp(0.0001);
myexp(0.0000001);
myexp(0.0000000001);
myexp(0.0000000000001);
}
答案 0 :(得分:1)
在1/myfac(n)
中,分数的两边都是整数。如果n
大于1,则结果将向下舍入为零。
请尝试使用1./myfac(n)
,小数点表示double
数字类型。