在C ++中找到前n个自然数的第m个求和
在这个问题上,我们给了两个整数m和n。我们的任务是找到前n个自然数的第m个求和。
问题描述: 我们将找到m次n个自然数之和。总和由公式给出,
如果(m>1),
sum(n,m)=sum(sum(n,(m-1)),1)
如果(m=1)
sum(n,m)=sum(n,1)=n个自然数的总和
让我们举个例子来了解这个问题,
输入: m=4,n=2
输出: 231
解释:
sum(2,4)=sum(sum(2,3),1)
=和(sum(sum(2,2),1),1)
=和(sum(sum(sum(sum(2,1),1),1),1)
=总和(sum(sum(3,1),1),1)
=总和(sum(6,1),1)
=总和(21,1)
=231
解决方法-
解决此问题的简单方法是使用两个嵌套循环。外部一个用于m个值,内部一个用于n个值。我们将更新n的值,并计算n次自然数的总和m次。
一种更有效的方法是递归调用n个自然数的总和m次,每次进行递归时,用先前的总和更新值。
算法:
步骤1: 如果m的总和大于1,则用sum=sum(n,m-1)*(sum(n,m-1)+1)/2更新 总和。
步骤2: 如果m的值为1,则返回和=n*(n+1)/2。
步骤3: 返回总和。
该程序说明了我们解决方案的工作原理,
示例
#include <iostream>
using namespace std;
int calcSumN(int n, int m) {
if (m == 1)
return (n * (n + 1) / 2);
return (calcSumN(n, m-1) * (calcSumN(n, m-1) + 1) / 2);
}
int main() {
int n = 4;
int m = 6;
cout<<m<<"-th summation of first "<<n<<" 自然数是 "<<calcSumN(n, m);
return 0;
}输出结果6-th summation of first 4 自然数是 125230148
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短