解题思路:根据已知条件,最后只剩一个桃,从1开始依次往回递归,可得递归表达式f(x)=2*(f(x-1)+1)

注意事项:因为递归次数n在主函数才被用户赋值,但是在主函数下面再定义递归函数不符合电脑的编译顺序,因而可以先在前面定义这个递归函数但是先不做处理,只是告诉有这么一个函数,后面会进行处理。

参考代码:

#include<stdio.h>

int f(int x);

int main()

{

int n = 0;

scanf_s("%d", &n);

printf("%d", f(n));

return 0;

}

int f(int x)

{

if (x - 1)

return 2 * (f(x - 1) + 1);

else return 1;

}


点赞(0)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 2 条评论

昨夜无风无月 2年前 回复TA
@昨夜无风无月 合理利用循环可以简化代码
昨夜无风无月 2年前 回复TA
#include<stdio.h>
int main()
{
	int n = 0;
	scanf_s("%d", &n);
	int x1 = 0, x2 = 1;
	for (int i = 1; i < n; i++)
	{
		x1 = x2;
		x2 = 2 * (x1 + 1);
	}
	printf("%d",x2);
	return 0;
}