递归算法——农夫养牛

 1 /**
 2  * Created by Administrator on 14-5-13.
 3  * 一个农夫养了一头牛,三年后,这头牛每年会生出1头牛,
 4  * 生出来的牛三年后,又可以每年生出一头牛……问农夫10年后有多少头牛?n年呢?
 5  */
 6 public class NewCow {
 7     public static void main(String[] args){
 8         for(int i=1;i<30;i++)
 9         {
10             System.out.print(i+"年后有牛:");
11             System.out.println(countCow(i));
12         }
13     }
14     public static int  countCow(int temp){
15         if(temp<=2)
16             return 1;
17         if(temp==3)
18             return 2;
19         else
20             return countCow(temp-1)+countCow(temp-3);
21     }
22 }

递归算法——农夫养牛,布布扣,bubuko.com

时间: 2024-12-19 17:50:19

递归算法——农夫养牛的相关文章

递归算法——农夫养牛之动归

1 /** 2 * Created by Administrator on 14-5-15. 3 */ 4 public class NewCow_DP { 5 public static void main(String[] args){ 6 int[] cows=new int[31]; 7 cows[1]=1; 8 cows[2]=1; 9 cows[3]=2; 10 for(int i=4;i<=30;i++){ 11 cows[i]=cows[i-1]+cows[i-3]; 12 }

转一下递归

递归专题:我个人认为递归是算法中很重要的武器,虽然递归的效率很慢,但他是我们学习其他算法的基础,而递归这一算法又很抽象,也很难调试,所以我认为我有必要要这里好好理解递归这一有力的武器..表达式的转化:#include<cstdio>#include<iostream>#include<math.h>#include <string>using namespace std; double calc(){    char s[10];    cin>>

汉诺塔递归算法

利用递归算法: 第一步:将n-1个盘子移到B 第二步:将第n个盘子移到C 第三步:将n-1个盘子移到C #include<iostream> using namespace std; int count=0; void move(int n,char a,char b) //n表示盘子号a表示盘子的起始位置 b表示盘子到达的位置 { cout<<a<<"->"<<b<<endl; count++; } void towe

对递归算法的理解

1.递归的定义:程序调用自身的编程技巧称为递归.递归做为一种算法在程序设计语言中广泛应用.一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量.递归的能力在于用有限的语句来定义对象的无限集合.一般来说,递归需要有边界条件.递归前进段和递归返回段.当边界条件不满足时,递归前进:当边界条件满足时,递归返回. 2.递归的优点:代码简

简单递归算法题

#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/4/28 16:41 # @Author : MnCu # @Site : # @File : fbnq.py # @Software: PyCharm # 一对兔子从出生到可繁殖需两个月,然后每月都能繁殖一对兔子,问n月后共有多少兔子 def fbnc_func(n): ''' 1 出口: 当月份小于等于2月时,则返回1 2 f(n)与f(n-1)的关系: 当月的兔子数 =

全排列问题的递归算法(Perm)

[题目]设计一个递归算法生成n个元素{r1,r2,-,rn}的全排列. [算法讲解] 设R={r1,r2,-,rn}是要进行排列的n个元素,Ri=R-{ri}.集合X中元素的全排列记为perm(X).(ri)perm(X)表示在全排列perm(X)的每一个排列前加上前缀得到的排列.R的全排列可归纳定义如下: 当n=1时,perm(R)=(r),其中r是集合R中唯一的元素:当n>1时,perm(R)由(r1)perm(R1),(r2)perm(R2),-,(rn)perm(Rn)构成.实现思想:将

java基础学习总结五(递归算法、冒泡排序)

一:递归算法 概念:自己调用自己的方法 示例代码如下: 1 @Test 2 /** 3 * 递归求和 4 * 5+4+3+2+1=15 5 */ 6 public void getSum() { 7 long sum = sum(5); 8 System.out.println("sum=" + sum); 9 } 10 11 public static long sum(int i) { 12 if (1 == i) { 13 return 1; 14 } else { 15 ret

递归算法解析成树形结构

/** * 递归算法解析成树形结构 * * @param cid * @return * @author jiqinlin */ public TreeNodeModel recursiveTree(int org_code) { //根据cid获取节点对象(SELECT * FROM tb_tree t WHERE t.cid=?) MiddleOrgEntity middleOrgEntity = new MiddleOrgEntity(); middleOrgEntity.setTable

递归算法(转)

递归算法设计的基本思想是:对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解. 关键要抓住的是: (1)递归出口 (2)地推逐步向出口逼近 例子: example: 求5的阶乘..          如下: Java代码  public class Test { static int multiply(int n){ if(n==1||n==0) return n; else return n*mul