第一周实验--递归

递归

第一周的数据结构课总结。

第一题 递归求和

描述

递归是一种非常有效的程序设计方法,应用相当广泛,递归求和就是其中的一种。现在定义数列通项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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值