求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222(通过递归实现)

一、递归函数的条件

1.递归的次数是有限的;

2.每次递归后都要接近这个条件;

二、如何实现求Sn的和(函数创建)

1)、考虑形参有几个:(下面以我设的变量为例)

        首先想到的就是需要有Sn中的前n项作为变量,则需要一个int n来表示n项和,以及上述问题中的数字a,设一个int a表示数字;那么考虑到这我们可以先初略尝试一下编辑函数,如下:

由于递归的条件,想到了设置yy++来实现,当y==n就会结束递归;但是如果单纯就是int y的话,y就属于自动存储期的变量,每次调用Sn这个函数 y 都会重新赋值为 0 ;因此可以用static将y变成静态存储期,不会static的也可以查找下面网站或者抖音搜索比特鹏哥的视频:c语言static是什么意思 • Worktile社区c语言static意思是静态变量。static指修饰符,可以用来修饰变量,也可以用来修饰函数。如果是在函数外面定义的,那么static说明的变量可以在当前c程序文件中使用。如果是在函数内部定义的,那么这个变量只初始化一次,即使再次调用这个函数,这个static变量也不会再次被初始化。 一、 static概述 Stati...icon-default.png?t=N7T8https://worktile.com/kb/ask/19274.html(4.33 YzG:/ 06/13 v@s.Eh 《鹏哥C语言第一课》第70.1讲 C语言static的作用:修饰局部变量(1)# c语言 # 计算机 # 鹏哥C语言 # c语言程序设计 # 计算机大学生 https://v.douyin.com/iLuAsmwU/ 复制此链接,打开Dou音搜索,直接观看视频!)

2)、完善函数的漏洞:

        对于该函数但是是否可行呢???我通过运行发现出现了BUG!!!想到了调试,通过调试发现,问题出现在a*10+a这个地方,接下来,以题目2为例,表示的数是2*10+2,,,(2*10+2)*10以此类推;以递归一次为例:

这里画出红线部分明显不符合要求了,因此我想到可以设置一个变量b来存储元素a = 2的值;由此产生下面的函数:

这里我用到的const修饰b的值,相当于锁死 b = 2,通过运行发现结果是正确的;

关于const:

const的用法详解(C语言)_c语言>const-CSDN博客文章浏览阅读6.4k次,点赞6次,收藏25次。const的用法(C语言)文章目录const的用法(C语言)(一)const的作用(二)const和指针的结合(三)const和引用的结合目录:const的作用const和指针的结合const和引用的结合(一)const的作用const修饰的量为一个常量即不能被修改的量 如:int a=10;指定义了一个变量a并初始化为10,但是后面可以对a的值进行修改。 _c语言>consthttps://blog.csdn.net/xiaomu_Y/article/details/106343928

三、完整的代码:

int sn(int a,int n,const int b)//a表示sn数列中的数字,n表示前几项和,b来接收a的值并固定,保证不会发生改变
{
	static int y = 0;//通过static修饰y,将y变成静态存储期;
	if (y==n)
	{
		return 0;//递归的限制条件
	}
	y++;
	return sn(a * 10 + b,n,b)+a;//因为a实在变的而我们需要加的是最开始的数字,所以用b来保存第一次的a;
}

int main()
{
	int a;
	int n;
	scanf("%d", &a);
	int b = a;//将数字a保存到b中;
	printf("求a的前几项和:"); 
	scanf("%d", &n);

	printf("%d",sn(a, n,a));
	return 0;
}

  • 19
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值