C语言 使用递归函数计算1到n之和

#include <stdio.h>

int sum( int n );

int main()
{
    int n;

	puts("请输入正整数n:"); 
    scanf("%d", &n);
    printf ("1到%d的和等于:%d\n", n, sum(n));

    return 0;
}

int sum( int n ){
	
	if(n > 1){
		return n + sum(n - 1);
	} else if(n <= 0){   //  当输入的 n 小于等于 0时,返回0.
		return 0;
	}else {        // 当n != 1时结束递归循环
	 	return 1;
	}
}

运行结果:
在这里插入图片描述

例如:
当 n = 5时,sum函数第一次执行:

判断 5 > 1return 5 + sum(5 - 1)5 + 等待sum(5 - 1)函数执行结束

sum函数第二次执行:
sum(5 - 1) = sum(4)

判断 4 > 1return 4 + sum (4 - 1)4 + 等待sum(4 - 1)函数执行结束

sum函数第三次执行:
sum(4 - 1) = sum(3)

判断 3 > 1return 3 + sum (3 - 1)3 + 等待sum(3 - 1)函数执行结束

sum函数第四次执行:
sum(3 - 1) = sum(2)

判断 2 > 1return 2 + sum (2 - 1)2 + 等待sum(2 - 1)函数执行结束

sum函数第五次执行:
sum(2 - 1) = sum(1)

判断 1 > 1 该等式不成立return 1返回结果 1

第五次返回结果:return 1 逐层往上返回,
第四次运行结束:(retrun 2 + 1) = return 3;
第三次运行结束:(return 3 + 2 + 1)= return 6;
第二次运行结束:(return 4 + 3 + 2 + 1)= return 10;
第一次运行结束:(return 5 + 4 + 3 + 2 + 1)= return 15;

最后程序结束 返回最后结果: 15

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值