C言語テスト | 問題: 正の整数nを1つ入力し、sの最初のn個の逆階乗の合計を計算します。

質問内容:正の整数入力し s の最初のn項の和を計算します

s = 1 + 1/2! +....+ 1/n!

方法 1: [for ループを 2 つ]

double fun(int n)
{
	double s = 1.0,s_ = 1.0;
	int i,m;
	for(i=1;i<=n;i++)
	{
		s_ = 1.0;
		for(m=1;m<=i;m++)
		{
			s_ = s_ * m;
			printf("%lf\n",s_);
		}
		s = s +  (1.0/s_);
	}

	return s;
}
void main()
{
	int n;
	printf("input n:");
	scanf("%d",&n);
	printf("s = %f\n",fun(n));
	system("pause");
}

 方法 2: [for ループを 1 つ]

double fun(int n)
{
	double temp = 1;
	double s = 1;
	for(int i=1;i<=n;i++)
	{
		temp /= i;
		s += temp;
	}
	return s;
}
void main()
{
	int n;
	printf("input n:");
	scanf("%d",&n);
	printf("s = %f\n",fun(n));
	system("pause");
}

おすすめ

転載: blog.csdn.net/zzztutu/article/details/126365026