7-4猴子吃桃问题及我的大致思路:

在这里插入图片描述

#include<stdio.h>
int N;
int digui(int x)
{
	if(x == 1)
	{
		return 1;
	 } 
	return 2*( digui(x -1) + 1);
}
int main(void)
{
	int last = 1;
	scanf("%d",&N);
	printf("%d",digui(N));
	return 0;
} 

大致思路:

本题可以用递归和while循环写,并且,递归会在PTA上超时,

但是我认为递归的思路还是很好的,但是我遇到了一点弯儿。那就是digui(1)和digui(N)究竟谁代表第一天的桃子个数。这里呢,我取的是反向,也就是说,digui(N)代表第一天的桃子数。digui(1)代表的是第N天的桃子数,也就是递归的终点:桃子数为1.

我们知道,递归是要又终点和递归条件的,我们找到了终点,就应该写出递归的关系,怎么想的呢,就是把这个函数的返回值的值用下一项或者上一项表示(其实本质是参数的值更加接近于递归终点的那一项),把这个关系表达出来,就会一目了然。
下面是while算法:

#include<stdio.h>
int main()
{
	int N, i, x;
	scanf("%d", &N);
	i=1;
	x=1;
	do{
		x=2*(x+1);
		i++;
	}
	while(i<N);
	printf("%d", x);
	
	return 0;
 } 

猜你喜欢

转载自blog.csdn.net/J_aSON_/article/details/106753838