题目描述
一只小猴买了若干个桃子。第一天他刚好吃了这些桃子的一半,又贪嘴多吃了一个;接下来的每一天它都会吃剩余的桃子的一半外加一个。第 nn 天早上起来一看,只剩下 11 个桃子了。请问小猴买了几个桃子?
输入格式
输入一个正整数 nn,表示天数。
输出格式
输出小猴买了多少个桃子。
#include
int f(int x,int y)
{
x--;
y=((y+1)*2);
if(x==0) return y;
else return f(x-1,y);
}
int main()
{
int n,m;
m=1;
scanf("%d",&n);
printf("%d",f(n,m));
}
为什么没有输出
改动处见注释,供参考:
#include<stdio.h>
int f(int x, int y)
{
//x--; //修改
if (x == 1) //if (x==0)
return y;
else {
y = ((y + 1) * 2); //修改
f(x - 1, y); //修改 return f(x-1,y);
}
}
int main()
{
int n, m;
m = 1;
scanf("%d", &n);
printf("%d", f(n, m));
}
#include <stdio.h>
int peach(int day){
int result;
if (day == 1)
result = 11;
else
result =(peach(day + 1) + 1) * 2;
return result;
}
int main(void){
int n,num;
scanf("%d",&n);
num = peach(n);
printf("num=%d\n", num);
return 0;
}
该回答引用ChatGPT
using System;
class Program {
static void Main(string[] args) {
int n = int.Parse(Console.ReadLine());
int x = 1;
for (int i = 1; i < n; i++) {
x = (x + 1) * 2;
}
Console.WriteLine(x);
}
}
输入天数n,使用for循环计算每天剩余桃子数量,最后得到小猴开始买了多少个桃子x,输出即可。注意:题目描述中未指定n的范围,可能需要加上异常处理。
函数f刚进去的时候x已经减一了,后面else条件里面再调用f的时候直接return f(x,y)就可以了