码迷,mamicode.com
首页 > 其他好文 > 详细

杭电acm 2013题

时间:2015-06-07 17:23:45      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:

            蟠桃记

    喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题! 什么问题?他研究的问题是蟠桃一共有多少个! 不过,到最后,他还是没能解决这个难题,呵呵^-^ 当时的情况是这样的: 第一天悟空吃掉桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢?

    这道题目几个月以前用循环做过,最近想重温下c语言,又拿出来重新做,一看典型的递归题。假设第n天剩下的桃数为Sn,根据题目不难的出规律:
 
  Sn+1=Sn/2-1, Sn=2*Sn+1+2;
  
  定义递归函数为peace(int n,int day),传递两个参数,
 
  n和day,对n赋初始值为1,控制递归次数,day大小为天数n;
 
  递归的出口是当n=day时,  N=1;
 
  进行递归 ,    N=peace(n+1,day)*2+2;
 
  下面是代码:

#include<stdio.h>
int peace(int n,int day);
int main(void)
{
    int n,day;
    while(scanf("%d",&n)!=EOF)
    {
        day=n;
        printf("%d\n",peace(1,day));
    }
    return 0;
}
int peace(int n,int day)
{
    int N;
    if(n==day)
    {
        N=1;
    }
    else
    {
        N=peace(n+1,day)*2+2;
    }
    return N;
}

 

第一次写博客,词不达意,希望多向各位学习!

  

杭电acm 2013题

标签:

原文地址:http://www.cnblogs.com/tanxing/p/4558683.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!