三国马超
2016-01-14 13:47
猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天在想吃的时候就剩一个桃子了,问第一天共摘下来多少个桃子?并反向打印每天所剩桃子数。
i=10
s=1
for i in range(10):
i=s+1+1
s=s+i
print(i)
print(s)
Python
首先他是一个递归问题,什么是递归。递归就是函数调用自身。
分析这个问题,要知道第一天桃子的个数,就必须要知道第二天桃子的个数,可以使用一个递归函数
getPeachnumber(n)
其中当n为10的时候表示的是第十天剩余桃子的个数
这时候我们想要求得第九天的桃子数 题上说第n天的桃子数是n-1天桃子数的一半再减一
相当于是(第n+1天的桃子数+1)*2是第n天的桃子数
所以可构建出递归函数 num =(getPeachNumber(n+1)+1)*2;
再控制好结束条件,返回值,就OK了
#include <stdio.h>
int getPeachNumber(n)
{
int num; //定义所剩桃子数
if(n==10)
{
return 1; //递归结束条件
}
else
{
num =(getPeachNumber(n+1)+1)*2; //这里是不应该用递归呢?
printf("第%d天所剩桃子%d个\n", n,num); //天数,所剩桃子个数
}
return num;
}
int main()
{
int num = getPeachNumber(1);
printf("猴子第一天摘了:%d个桃子。\n", num);
return 0;
}
C语言入门
926020 学习 · 20793 问题
相似问题