递归
第一周的数据结构课总结。
第一题 递归求和
描述
递归是一种非常有效的程序设计方法,应用相当广泛,递归求和就是其中的一种。现在定义数列通项An = n * n,给定一个整数n(1 <= n <= 1000),要你求前n项和Sn,即Sn = 1 * 1 + 2 * 2 + … + n * n。要求使用递归的方法进行计算。
输入
输入只有一行,包括一个整数n,表示要求的项数。
输出
输出只有一行,为一个整数Sn,表示对应的前n项和。
样例输入
7
样例输出
140
解题思路
一开始,就没管递归的条件,想了也想不出。就直接用了熟悉的for循环。emmmm看到大神的文章之后发现递归和递推的这一算法的存在与区别。
先试试递推,因为高中学的等差数列公式就是递推法得到的,也容易理解。
递推解
// An highlighted block
#include<iostream>
using namespace std;
int main()
{
int s[1000];
s[1]=1;/干啥//为后续的递归循环做准备。
int n;
cin >> n;
for (int i = 2; i <= n; i++)
{
s[i] = s[i - 1] + i * i;//递归循环
}
cout << s[n];
return 0;
}
递归解
先别问咋想到,先看。
#includ