暑假复习以及进阶-------递归函数

6-1 使用递归函数计算1到n之和(5 分)

本题要求实现一个用递归计算1+2+3+…+n的和的简单函数。

函数接口定义:

int sum( int n );

该函数对于传入的正整数n返回1+2+3+…+n的和;若n不是正整数则返回0。题目保证输入输出在长整型范围内。建议尝试写成递归函数。

裁判测试程序样例:

#include <stdio.h>

int sum( int n );

int main()
{
    int n;

    scanf("%d", &n);
    printf ("%d\n", sum(n));

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例1:

10

输出样例1:

55

输入样例2:

0

输出样例2:

0

C语言代码

int sum( int n )
{
    int s=0;//定义返回值,s初始值是0,因为之后要进行求和。
    if(n>0)//控制递归次数
        s=n+sum(n-1);//进行函数调用
    return s;
}

分析:递归通常是一种方法,也是一种函数及其调用方法的总称,这种函数可以自己调用并使用自己,这种函数被称为递归函数,这种方法被称为递归。以此题为例,要进行从1到n的和,循环的方法是直接进行相加,这个从逻辑上很好理解,而递归则比较麻烦,递归可以理解为把一个问题无限次微分得到的累加效果。这里在求和时,函数会进行很多层的自身调用,每一层调用都是调用这个函数结构,若条件不满足,就会持续调用,直到条件不满足时,最后调用的函数返回一个值,调用完成,第一层函数返回值。

从逻辑上分析,这个实际上是用反复调用的方法写出来1+2+3+...+n,每一个sum(a)都相当于留下了一个a和另一个sum(a-1),而sum(a-1)又具有同样的作用,直到条件不满足,函数进行一个不一样的语句,不再自身调用自身,这里就是递归调用的终点,同时所模拟的式子构造完成,进行值的返回。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值