6-9 实验6_2_递归求值二 (100 分)

本文介绍了一种通过递归算法解决特定数学序列求和的方法。给出两种递归函数实现方式,一种直接递归求和,另一种采用递推公式进行计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现有序列: s = a + a + 3 + a + 6 +…+ a + 3 X n

请写出递归求s的程序。

输入只有一行,为两个用空格分隔正整数,分别代表n(0<n) 和 a(1<a)

输出也只有一行,为此情况下s的值。(测试用例保证所有整数可以用 int存储)。

注意:此题要求递归求解,且不允许使用全局变量,其他方式不得分。

函数接口定义:

int getSum(int n , int a) ;

其中 n 和 a 都是用户传入的参数。 函数须计算结果。

裁判测试程序样例:


#include <stdio.h>

int getSum(int n , int a) ;

int main()
{
       int        n , a ; 
       
       scanf( "%d%d" , &n , &a );       
       printf( "%d\n" , getSum( n , a ) );

    return 0;
}

/* 请在这里填写答案 */

输入样例:

1 2

输出样例:

7

代码如下:

int getSum(int n, int a)
{
	if (n == 0)
		return a;
	else
		return getSum(n - 1, a) + 3 * n + a;
}

还有一种写法:

 

 

int getSum(int n, int a)
{

    if (n == 0)
        return a;
    else if (n == 1)
        return a + a + 3;
    else
        return 2 * getSum(n - 1, a) - getSum(n - 2, a) + 3;

}

第二种更为抽象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值