题目如下:
XXX买了一堆桃子不知道个数,第一天吃了一半的桃子,还不过瘾,又多吃了一个。以后他每天吃剩下的桃子的一半还多一个,到 n 天只剩下一个桃子了。XXX想知道一开始买了多少桃子。
首先我们看到题目就应该想边界是什么,通过题目我们可以知道,到第 n 天剩下了一个桃子 那么我们就可以让这个边界为 1 当 n 等于1的时候,也就是第一天就只有一个桃子。
然后我们在想这道题的逻辑
第 n 天的时候剩下了一个桃子,那么第 n-1 天呢,我们先来分析一下:
先设 n-1 天吃了 y 个桃子 我们就可以得出公式:
y/2-1=1 => y/2=(1+1)=>y=(1+1)*2
再次将当天的设置为 n 前一天的设置为 y
这里将 n-1 设为 n , n-2 设为 y
y/2-1=(1+1)*2=>y/2=(4+1)=>y=(4+1)*2
由此推出前一天的桃子数量为当天的(n+1)*2
了解完逻辑,然后完成代码
#include<stdio.h>
int f(int n)
{
if (n == 1)
{
return 1;
}
return (f(n - 1)+1) * 2 ;
}
int main()
{
int n;
scanf("%d", &n);
int sum = f(n);
printf("%d", sum);
return 0;
}