题解 | #牛牛学数列3#

牛牛学数列3

https://www.nowcoder.com/practice/f65c726d081c4160a9356eabf0dc21d9

#include <stdio.h>






//输入一个整数n,计算 1+1/(1-3)+1/(1-3+5)+...
// +1/(1-3+5-...((-1)^(n-1))*(2n-1))的值
//1-3+5-7+……+pow(-1,n-1)(2n-1)
double flag(int n)
{
	double sum = 0.0;
	
	for (int i = 1; i <= n; i++)
	{
		int fenmu = 0;//重置分母为0,为新的迭代做准备
		//内循环的目的就是计算出分母的大小
		for (int j = 0; j < i; j++)
		{
			fenmu += (j % 2 == 0) ? (2 * j + 1) : -(2 * j + 1);
		}//当i=2时,j执行两次循环
		/*j=0:内循环执行第一次,因为j是偶数,所以分母更新为:fenmu+(2*0+1)=1
		* j=1:分母变为1-(2*1+1)=-2
		* 计算出分母是-2后,然后外循环继续进行,sum增加1.0 / fenmu;
		* 即1/-2		
		*/
		//在内循环计算完分母的大小后,就在外循环对sum的值进行增加
		//每次进入内循环之前,在外循环之前就讲分母的值赋值为0,进行新的分母计算
		//在外循环之中,每次就将内循环计算出的数加到sum中去
		sum += 1.0 / fenmu;
	}
	return sum;
}

int main()
{
	int n;
	scanf("%d", &n);
	double sum = flag(n);
	printf("%.3f\n", sum);
	return 0;
}
//这个代码关键的几点
/*

1.两层循环之间,两层循环之间讲分母重新赋值进行新的分母计算
2.内循环中分母的计算公式:这种计算公式确保了分母是右一个交替的奇数序列构成的,其
其中正负号交替出现
3.在内循环之外,外循环之内进行对刚计算好的分母进行运算
*/

全部评论

相关推荐

牛客40297450...:不是研究生强,是你强
点赞 评论 收藏
分享
09-16 17:32
门头沟学院 Java
顺顺超爱学:1.熟悉Java编程语言,熟悉集合,多线程,IO,反射等核心知识,了解线程池,ThreadLocal等进阶知识; 2.熟悉Mysql数据库,熟练使用sql,熟悉索引,存储引擎,事务原理,MVCC,锁机制,了解sql优化; 3.熟悉Redis缓存,了解常见的数据类型,了解缓存常见问题及其解决方案,了解使用Redis实现的分布式锁方案; 4.熟悉Javaweb开发框架,熟悉spring,springmvc,mybatis等,了解IOC,AOP等; 5.熟悉微服务开发框架,熟悉SpringBoot,SpringCloud,包括Nacos,OpenFeign,Gateway等核心组件; 6.熟悉Rabbitmq消息队列,熟练使用消息模型,了解架构,消息可靠性,死信队列,延迟消息等;
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务