JAVA遞迴演算法
1.什麼是遞迴演算法
遞迴演算法就是直接或間接呼叫自己的演算法
2.問題1:一列數的規則如下: 1、1、2、3、5、8、13、21、34 ,求第30位數是多少?使用遞迴實現
1 public class FibonacciSequence { 2 public static void main(String[] args){ 3 System.out.println(Fribonacci(9)); 4 5 } 6 public static int Fribonacci(int n){ 7 if(n<=2) 8 return1; 9 else 10 return Fribonacci(n-1)+Fribonacci(n-2); 11 12 } 13 }
3.問題2:漢諾塔問題
漢諾塔(又稱河內塔)問題其實是印度的一個古老的傳說。
開天闢地的神勃拉瑪(和中國的盤古差不多的神吧)在一個廟裡留下了三根金剛石的棒,第一根上面套著64個圓的金片,最大的一個在底下,其餘一個比一 個小,依次疊上去,廟裡的眾僧不倦地把它們一個個地從這根棒搬到另一根棒上,規定可利用中間的一根棒作為幫助,但每次只能搬一個,而且大的不能放在小的上 面。計算結果非常恐怖(移動圓片的次數)18446744073709551615,眾僧們即便是耗盡畢生精力也不可能完成金片的移動了。
要求:輸入一個正整數n,表示有n個碟片在第一根柱子上。輸出操作序列,格式為“移動 t從 x 到 y”。每個操作一行,表示把x柱子上的編號為t的碟片挪到柱子y上。柱子編號為A,B,C,你要用最少的操作把所有的盤子從A柱子上轉移到C柱子上。
1 public class Hanio { 2 public static void main(String[] args){ 3 int i=3; 4 char a ='A',b='B',c='C'; 5 hanio(i,a,b,c); 6 } 7 public staticvoid hanio(int n,char a,char b,char c){ 8 if(n==1) 9 System.out.println("移動"+n+"號盤子從"+a+"到"+c); 10 else{ 11 hanio(n-1,a,c,b);//把上面n-1個盤子從a藉助b搬到c 12 System.out.println("移動"+n+"號盤子從"+a+"到"+c);//緊接著直接把n搬動c 13 hanio(n-1,b,a,c);//再把b上的n-1個盤子藉助a搬到c 14 } 15 } 16 }
相關推薦
基礎&演算法|Java遞迴演算法練習
Java遞迴演算法練習 使用java實現幾個比較簡單的遞歸面試題 寫遞迴演算法的時候,可以類比數學歸納法。 將每步先簡化 單向連結串列與遞迴演算法 實現單向連結串列 Node.java /** * @ClassName Node * @Descripti
java遞迴演算法求n的階乘(n>1,n是正整數)
/** * 遞迴演算法計算n的階乘 * 遞迴:自己調自己 * @param n * @return */ public static Integer jieCheng(Integer n) {
JAVA遞迴演算法
1.什麼是遞迴演算法 遞迴演算法就是直接或間接呼叫自己的演算法2.問題1:一列數的規則如下: 1、1、2、3、5、8、13、21、34 ,求第30位數是多少?使用遞迴實現 1 public class FibonacciSequence { 2 public static void main(S
java基礎(4)Java遞迴演算法
一、遞迴演算法的概念 在一個方法的方法體內,呼叫該方法本身,稱為遞迴 遞迴:包含了一種隱式的迴圈,會重複執行某段程式碼,但是這種重複不需要使用迴圈語句,不會看到for、while、do……while語句 二、思考 遞迴 實現: 求一個數的階乘 使用遞
Java 遞迴 演算法 遞迴求和 遞迴查詢動態選單
public class Test { private int sum=0,num=1; public int calSum(int maxnum){ if(num<=maxnum){ sum+=n
java遞迴演算法示例,單引數,多引數
這兩天公司來了個新同事,順便帶一下,給他解釋下遞迴。 要點:找出口,出口即呼叫自己直到不能呼叫為止,不能呼叫即自身方法已經return到具體值。 例: package test; public class Test1 { /** * 題目:1-n相加 * @p
快速排序的非遞迴演算法JAVA,使用棧來模擬遞迴
使用棧來模擬遞迴,消去qSort中的尾遞迴 public class stackQSort { private static int Partition(int[] arr, int start, int end) { //arr[start]為挖的第一個坑 int key =
Java利用遞迴演算法實現24點遊戲
24點遊戲 經典的紙牌益智遊戲,常見遊戲規則: 從撲克中每次取出4張牌。使用加減乘除,第一個能得出24者為贏。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求程式設計解決24點遊戲。 基本要求: 隨機生成4個代表撲克牌牌面
Java中常見的遞迴演算法
.常見遞迴演算法 (1)最常見的就是階乘,比如求5的階乘,數學公式就是:5*4*3*2*1,程式碼: package suanfa; public class Digui { public static int digui(int n){ i
Java篇:WeChat 模仿微信紅包的核心遞迴演算法
模仿WeChat的拼手氣紅包 ,例如:10000元傳送50個包。 這50個紅包隨機分配,但是最後相加等於10000. 採用隨機數,隨機紅包金額。 又制定規則,不斷地遞迴運算。 限制最小的紅包金額,例如:0.01,因為考慮人性化,最小的紅包不能是0. 不限制可發出的紅
java漢諾塔遞迴演算法
相傳在古印度聖廟中,有一種被稱為漢諾塔(Hanoi)的遊戲。該遊戲是在一塊銅板裝置上,有三根杆(編號A、B、C),在A杆自下而上、由大到小按順序放置64個金盤(如下圖)。遊戲的目標:把A杆上的金盤全部移到B杆上,並仍保持原有順序疊好。操作規則:每次只能移動一個盤
Fibonacci序列遞迴演算法與遞推(Java)
Fibonacci遞推公式: f(1) = f(2) = 1;f(n) = f(n-1)+f(n-2)(n>2).在這裡取他除以10007的餘數 遞迴 public class Fibonacci { static int digui(int n) {
Java十進位制轉二進位制,遞迴演算法
用遞迴演算法求一個int的二進位制字串; 思路是:遞迴最簡單情況(遞迴出口)是0和1;其餘的是先呼叫遞迴算出n/2的二進位制字串,然後加上n時的位數(n % 2)。 import java.util
有關遞迴演算法的面試題java實現
什麼叫遞迴? 遞迴是方法(函式)呼叫方法本身的一種程式設計技巧; 使用遞迴需要滿足2個條件: 1)有反覆執行的過程(呼叫自身) 2)有跳出反覆執行過程的條件(遞迴出口) 遞迴演算法的應
Java演算法 遞迴演算法計算階乘
程式碼: package com.xu.main; import java.util.Scanner; public class P9 { static long fact(int n) {
Java的遞迴演算法
遞迴演算法設計的基本思想是:對於一個複雜的問題,把原問題分解為若干個相對簡單類同的子問題,繼續下去直到子問題簡單到能夠直接求解,也就是說到了遞推的出口,這樣原問題就有遞推得解。 關鍵要抓住的是: (1)遞迴出口 (2)地推逐步向出口逼近 例子: example: 求5的階乘。。 如下:
警察智力訓練--藍橋杯歷年java真題(java遞迴實現eval演算法)
匪警請撥110,即使手機欠費也可撥通! 為了保障社會秩序,保護人民群眾生命財產安全,警察叔叔需要與罪犯鬥智鬥勇,因而需要經常性地進行體力訓練和智力訓練! 某批警察叔叔正在進行智力訓練: 1 23 4 5 6 7 8 9 = 110; 請看上邊
java 解決 漢諾塔問題(遞迴演算法)
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Exercise6_37 extends JApplet implements ActionListener
JAVA 複習氣泡排序 , 遞迴演算法
使用氣泡排序,首先我們要知道,外層n-1,內層n-i-1,外層是表示迴圈的次數,內層表示迴圈比較,比較的方式是用賦值的方式進行比較的,用我們比較通俗的話來說,兩兩相比,大者後移。氣泡排序和遞迴是基本演算
遞迴演算法 Java實現
緣起於網易的一道演算法筆試題,之前對遞迴演算法有一個初步印象。感覺遞迴好像就是一種迭代的過程。將原問題不斷分解為若干個與原問題類似更小的問題,直到小問題已知,也就是找到了遞迴演算法的出口,此時,再講問題迴帶得到解的結果。廢話不多說,先上題。 題目是這樣的:有一隻猴子第一天摘