算法小合集(求和)

算法小合集(求和)

例1,编写一个程序求1+2+3+4+5+…+100的值;

分析:首先这是一个等差数列可以用求和公式,但是这里不用,因为不是所有的求和我们都知道公式

既然是求和;那么必然能够写成 类似于 ∑ i = 1 n a i \sum_{i=1}^{n} ai i=1nai的形式
那么只要找到 a i ai ai通项公式,然后用for循环加起来就好了
所以,转换为,找通项公式
这个题目很容易看出 a i = i ai=i ai=i;
那么代码就很容易写出来了;

#include<stdio.h>
int main()
{
	int sum = 0;
	for (int i = 1;i <= 100;i++)
	{
		sum += i;
	}
	printf("%d", sum);
}

例二:编写一个程序求(1)-1/2+1/3+…+1/99-1/100;

由上面的分析知道:100项循环100次

通项公式为 a i = ( − 1 ) i + 1 ∗ ( 1 / i ) ai=(-1)^{i+1} *(1/i) ai=(1)i+1(1/i)

#include<stdio.h>
int main()
{
	float sum = 0;
	float sign = -1;
	float ai;
	for (float i = 1;i <= 100;i++)
	{
		sign *= -1;
		ai = sign * (1 / i);
		sum += ai;

	}
	printf("%f", sum);
	return 0;

例三 求2+22+222+2222+…共5项

a 1 = 2 a_1=2 a1=2
a i + 1 = a i ∗ 10 + 2 a_{i+1}=a_{i}*10+2 ai+1=ai10+2


#include<stdio.h>
int main()
{
	int sum =0;
	int ai=2;

	for (int i = 1;i <= 5;i++)
	{
		if (i ==1)
		{
			sum += ai;
		}
		else
		{
			ai = ai * 10 + 2;
			sum += ai;
		}

	}
	printf("%d", sum);
	return 0;
}

例4 编程求 1!+2!+3!+4!+…=

ai=i!

#include<stdio.h>
int fac(int n)
{
	if (n == 0)
	{
		return 1;
	}
	else
	{
		return n * fac(n - 1);
	}
}
int main()
{
	int sum = 0;
	int n;
	scanf_s("%d", &n);
	for (int i = 1;i <= n;i++)
	{
		sum += fac(i);
	}
	printf("%d", sum);
}

例五求e=1+1/1!+1/2!+1/3!+…要求最后一项小于10-10时结束

#include<stdio.h>
int fac(int n)
{
	if (n == 0)
	{
		return 1;
	}
	else
	{
		return n * fac(n - 1);
	}
}
int main()
{
	double sum=0;
	for (double i = 0;1.0/fac(i)>1e-10;i++)
	{
		sum = sum + (1.0/fac(i));
	}
	printf("%f",sum);
}

例6:求序列: 2 1 , 3 2 , 5 3 , 8 5 , 13 8 , 21 13 . . . \frac{2}{1},\frac{3}{2},\frac{5}{3},\frac{8}{5},\frac{13}{8},\frac{21}{13}... 12,23,35,58,813,1321...的前二十项和

分析:这个的通项公式不能一眼看出来,但是我们不难发现,

  1. 上一个的分子是下一个的分母
  2. 而下一个的分子是上一个的分子加分母
    我们设分母为deno;
    分子为num;
    d e n o 1 = 1 , n u m 1 = 2 deno_1=1,num_1=2 deno1=1num1=2
    d e n o i = n u m i − 1 deno_i=num_{i-1} denoi=numi1
    n u m i = d e n o i − 1 + n u m i − 1 num_i=deno_{i-1}+num_{i-1} numi=denoi1+numi1
    于是
#include<stdio.h>
int main()
{
	float deno = 1, num = 2;
	float sum = 0;
	float ai;
	float t;
	for (int i = 0;i < 20;i++)
	{
		if (i == 0)
		{
			deno = 1, num = 2;
			ai = num/deno;
			sum += ai;
		}
		else
		{
			t = deno;//t用来存上一个deno;
			deno = num;
			num = t + num;
			ai = num / deno;
			sum += ai;
		}
	}
	printf("%f", sum);
}

这样理解起来还是不是那么流畅,比如t的位置就容易被遗忘,于是我决定采用数组,因为数组可以随意取任何有数的地方的数,这样就完美适配了上边的公式

#include<stdio.h>
int main()
{
	float deno[21];
	float num[21];
	deno[1] = 1;
	num[1] = 2;
	float ai;
	float sum=0;
	for (int i = 1;i < 4;i++)
	{
		if(i==1)
		{
			ai = num[i] / deno[i];
			sum += ai;
		}
		else
		{
			deno[i] = num[i - 1];
			num[i] = deno[i - 1] + num[i - 1];
			ai = num[i] / deno[i];
			sum += ai;

		}
	}
	printf("%f", sum);
	
}

目前为了考试,只考虑怎么实现,不考虑时间复杂度,慢慢加油吧

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Python 中,可以使用内置的函数 `sum` 对数字序列求和。例如: ``` numbers = [1, 2, 3, 4, 5] total = sum(numbers) print(total) ``` 输出结果为: ``` 15 ``` 除了使用 `sum` 函数外,还可以使用 for 循环手动实现求和: ``` numbers = [1, 2, 3, 4, 5] total = 0 for number in numbers: total += number print(total) ``` 输出结果也为: ``` 15 ``` 如果需要对一个已知范围内的数字求和,可以使用等差数列求和公式: ``` n = 5 total = n * (n + 1) // 2 print(total) ``` 输出结果为: ``` 15 ``` ### 回答2: Python 求和算法是一个非常常见并且简单的算法。通常,我们可以使用 for 循环或者内置的 sum 函数来实现求和。 使用 for 循环方法来求和可以按照以下步骤进行: 1. 定义一个变量 sum,用于保存求和结果。 2. 使用 for 循环遍历需要求和的数列,将每个元素与 sum 相加,更新 sum 的值。 3. 循环结束后,sum 的值即为数列的求和结果。 以下是一个使用 for 循环方法求和的示例代码: ```python def sum_algorithm(numbers): sum = 0 for num in numbers: sum += num return sum numbers = [1, 2, 3, 4, 5] result = sum_algorithm(numbers) print(result) # 输出结果为 15 ``` 另外,Python 中还提供了内置的 sum 函数来实现求和。该函数接受一个数列作为参数,并返回数列的求和结果。以下是使用内置 sum 函数求和的示例代码: ```python numbers = [1, 2, 3, 4, 5] result = sum(numbers) print(result) # 输出结果为 15 ``` 不管是使用 for 循环还是内置函数 sum,Python 提供了很多灵活的方式来实现求和,使得求和算法变得非常简单和方便。 ### 回答3: Python 求和算法就是对一组数字进行加法运算,得到它们的总和。使用Python编程语言,有多种方法可以实现求和算法。 一种常见的方法是使用循环来遍历给定的数字列表,并将它们逐个相加。例如,假设有一个数字列表 `[1, 2, 3, 4, 5]`,我们可以使用循环来实现求和算法如下: ``` numbers = [1, 2, 3, 4, 5] total = 0 # 初始求和结果为0 for num in numbers: total += num # 将每个数字加到总和上 print(total) # 输出总和结果 ``` 另一种更简洁的方法是使用Python内置的`sum`函数,该函数可以对一个迭代对象进行求和。例如,我们可以像这样使用`sum`函数实现相同的求和算法: ``` numbers = [1, 2, 3, 4, 5] total = sum(numbers) # 使用sum函数对数字列表进行求和 print(total) # 输出总和结果 ``` 总的来说,Python 求和算法可以通过循环遍历数字列表并逐个相加,或者使用内置的`sum`函数来实现。这些方法都能够很方便地求出一组数字的总和。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值