序列求和
2021/7/8 6:06:17
本文主要是介绍序列求和,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
C++序列求和
问题描述
求1+2+3+4+...+n的和
数据规模与约定
n >= 1 && n <= 1,000,000,000
解题思路
- 本题最直观的方法就是用一个for循坏求出结果,但是注意这里的数据规模很大,用for循坏运算时间长,所以for循坏并不是最优解
- 利用等差数列求和的公式比for循坏执行的时间更短
- 第三个方法就是递归,但递归会保存大量临时数据和重复数据,太多的话会造成栈溢出,程序崩溃
方法一:循环累加法
#include<iostream> using namespace std; int main() { long long int s,count = 0; cin>>s; for(;s >= 1;s--) { count += s; } cout<<count<<endl; system("pause"); cin.get(); return 0; }
方法二:公式求和法
等差数列求和公式:S=[项数 *(首项 + 尾项)] / 2
#include<iostream> using namespace std; int main() { long long int s; cin>>s; cout<<s*(1+ s)/2<<endl; system("pause"); return 0; }
方法三:递归法
#include<iostream> using namespace std; long long int fun(long long int s) { if(s > 0) { return s + fun(s - 1); } else return 0; } int main(int argc, char const *argv[]) { long long int s,count; cin>>s; count = fun(s); cout<<count<<endl; return 0; }
这篇关于序列求和的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)