ocrosoft 程序设计提高期末复习问题M 递归求猴子吃桃

http://acm.ocrosoft.com/problem.php?cid=1172&pid=12

题目描述

猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半另加一个。到第n天早上想再吃时,就只剩下一个桃子了。求第1天共摘了多少个桃子

输入

n的值

输出

剩下的桃子数量

样例输入

10

样例输出

total=1534

题解:运用递归的思想,定义的A的函数代表的是第n天开始的时候所有的桃子,x的值从1开始到n结束。

代码:
#include <bits/stdc++.h>

using namespace std;

int n;

int A(int x)
{
    if(x == n) return 1;
    return 2*(A(x + 1) + 1);
}

int main()
{
    while(cin>>n)
    {
        printf("total=%d\n",A(1));
    }
    return 0;
}
 

原文地址:https://www.cnblogs.com/zlrrrr/p/9195130.html

时间: 2024-08-29 12:26:19

ocrosoft 程序设计提高期末复习问题M 递归求猴子吃桃的相关文章

杭电 2013 猴子吃桃 递归解法&amp;循环解法

题目估计看到过3次不止了,所以还是想复习下递归的运用. 奉上递归代码: #include <iostream> #include<math.h> #include <iomanip> #include<cstdio> #include<string> #include<map> #include<vector> #include<algorithm> #include<stdlib.h> using

C语言关于猴子吃桃问题(递归,非递归)

/*问题描述猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上再想吃时,见只剩一个桃子.求第一天共摘了多少桃子.*/ /*递归算法*/ #include<stdio.h>long int G(int day){ if (day == 0) return 1; else if (day > 0) return 2 *( G(day - 1) + 1); else retur

数据结构期末复习(三)

数据结构期末复习(三) 数组的存储结构 二维数组的顺序存储结构分为以行序为主序的存储方式和以列序为主序的存储方式. 以行序为主的存储方式就是常规的先存第0行的每列,再存第一行的每列,以此类推.以列为主的存储方式同理. 对于三维数组来说,按下标从左到右的顺序存储.例如,设a[0][0][0]的地址为p,则对于数组a[m][n][r],a[i][j][k] = p + (i*n*r + j*r + k)*l; 稀疏矩阵 三元组顺序表 转置函数最简单的方法就是row和col对应的值交换,并且row和c

[期末复习]《语义网与知识图谱》期末复习(二)

<语义网与知识图谱>期末复习(二) 这次老师发了个最终版的pdf帮助我们复习,那我就重来. 基本 语义web的组成:语义web信息的开放标准.从web描述信息中进一步获取语义的方法. 本体:本体是一种形式化的,对共享概念体系的明确而又详细的说明.提供一种共享词表.核心是分类体系. RDF使用有向图作为数据类型. RDF-Literals 即文本或者说是字符串,在rdf图种用方框表示. RDF表示 一个三元组包含 主语:URIs和空节点 谓语:URIs(通常被成为属性) 宾语:URIs.空节点或

[期末复习] 计算机操作系统复习(一)

操作系统期末复习 第一章-操作系统引论 操作系统的作用 作为计算机硬件系统之间的接口 系统资源的管理者 实现对计算机资源的抽象 操作系统的发展过程 未配置操作系统的计算机系统 人工操作,用户独占全机,资源浪费 脱机输入输出(Off-Line I/O)方式. 单道批处理系统 这里批处理指的是把很多作业放在一个磁带上,一次性输入给计算机 解决了人机矛盾(每执行一道程序都要手动装载)和cpu与I/O设备速度不匹配矛盾.提高了系统的吞吐量. 缺点:系统资源利用率低(I/O请求成功前CPU空闲). 多道批

数据结构期末复习第五章数组和广义表

数据结构期末复习第五章 数组和广义表 二维数组A[m][n]按行优先 寻址计算方法,每个数组元素占据d 个地址单元.     设数组的基址为LOC(a11) :LOC(aij)=LOC(a11)+((i-1)*n+j-1)*d     设数组的基址为LOC(a00) :LOC(aij)=LOC(a00)+( i*n+j )*d    二维数组A[m][n]按列优先 寻址计算方法,每个数组元素占据d 个地址单元.     设数组的基址为LOC(a11) :LOC(aij)=LOC(a11)+((j

[期末复习]《语义网与知识图谱》期末复习(一)

上海大学<语义网与知识图谱>期末复习(一) 前言 这个课..不太喜欢.但是不能挂呀!平常的话感觉很难听得进去,因为没有任何先导课,直接上这个确实有点难受,那个老师感觉得到他想表达很多东西,但是有些东西确实表达不够明确,每节课听得都迷迷糊糊,毕竟是一个前沿的东西,如果不是一线战斗的老师,估计很多概念都很难讲清楚吧. 以上均胡扯,万一我有哪天真的用上了呢?(见鬼了). 下面复习主要集中在可能的考点复习上,均个人感觉哪里可能出题等等. 之前总结过rdf/rdfs.turtle和owl语法,所以这里前

利用递归求阶乘

1 package com.d; 2 3 import java.util.Scanner; 4 5 public class Digui { 6 7 public static void main(String[] args) { 8 Digui d = new Digui(); 9 10 System.out.println("请输入一个整数"); 11 Scanner scan = new Scanner(System.in); 12 int a = scan.nextInt()

递归学习(一)最简单的C语言递归求年龄算法

递归是我们在学习编程中,必须要去学习的,虽然递归晦涩难懂 ,但是很多时候,递归的思想会很有用,但是在实际开发中,不建议使用递归,要用循环来代替递归,不然bug无穷. ----------------------------------------------------------- 问题描述: 有5个人坐在一起, 问第5个人,他说比第4个人大2岁, 问第4个人,他说比第3个人大2岁, 问第3个人,他说比第2个人大2岁, 问第2个人,他说比第1个人大2岁, 问最后一个人,他说10岁 第5个人多大