求1/1!-1/3!+1/5!-1/7!+...+(-1)^n+1 / (2n-1)!

求1/1!-1/3!+1/5!-1/7!+…+(-1)^(n+1) / (2n-1)!

方法一:
	找到 第i项式与第i项式分母之间的关系,第一次循环控制 项式数,嵌套循环控制第i项式累乘,利用第i项式与第i项式分母之间的关系,使用第一次循环控制子循环的分母
		此方法 复杂度 O(n^2)
	
#include<stdio.h>
#include<windows.h>
#pragma warning (disable : 4996)

int main(){

	int n = 0;
	scanf("%d", &n);
	int flag = 1;
	float denom ;
	int i = 1 ;
	float sum = 0;
	for (i; i <= n; i++){   // 1、 n 为  对n个该累加式进行 累加
		
		denom = 1.0; 
		
		int j = 1;
		
		// 2、 找出第 i 个 累乘式子 与式子分母之间的关系 即 i 对应 2 * i - 1
		for (j; j <= 2 * i - 1; j++){   
		
		// 通过项数与分母之间的关系,求出 对分母累乘的结果 
			denom *= j; 
		
		}
	
		sum += flag / denom; // 救出前 i 项式子的和,直到 i = 2 * n  - 1
		flag = -flag; // 求出第 i 项式的符号
	}

	printf("%f", sum);

	system("pause");
	return 0;

}
方法二:
	找到 第i项式与第i+1项式分母之间的关系 , 
	第i项是i的阶乘 ,第i+1项是 i的阶乘 再乘以 ( i + 1 ) * ( i + 2 )
	即 第i项 (2*i-1)!  第i+1项 (2*i-1)! *(2*i-2)*( 2 * i- 1)
 
		此方法 复杂度 O(n)
#include<stdio.h>
#include<windows.h>
#pragma warning (disable : 4996)

int main(){

	int n = 0;
	scanf("%d", &n);
	int sign = 1;
	float denom =1.0;
	
	int i = 2 ;
	float sum = 0;
	if (1 == n ){  // 当 n为1 时,sum =1;
	
		sum = 1;

		printf("%f", sum);
	}
	else if (n > 1){ 
		for (i; i <= n; i++){
		
		
		sign = -sign;
	
	// 从第二项起,在原有阶乘的基础上在往后乘两个数
		denom *= (2 * i - 2)*(2 * i - 1); /
		
		 sum += sign / denom;
		 
		
	}
	   sum = sum+1;  // 加上第一项的值为1;
		 printf("%f", sum);
	
	}
	else{
	
		printf("错误!!!");
	}

	system("pause");
	return 0;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值