Java中使用遞迴法
遇到一個問題,給出一個數字,比如10,就算出10×9×8×7……×2×1的結果。
第一個想到的方法:
public static int jisuan(int x) {
int r = 1;
for (int i = 0; i < x; i++) {
r = r * (i + 1);
}
return r;
}
遞迴的方法:
public int jisuan(int r) { int t; if (r == 1) { return 1; } t = jisuan(r - 1) * r; return t; }
執行
System.out.println(jisuan(5));
結果
120
由此可見,方法呼叫自己,比寫一個迭代更直觀。
注:使用遞迴法,需要有一個IF來終止迴圈,如果沒有終止迴圈的語句,一旦觸發會永不回收。
相關推薦
java中遞迴演算法和漢諾塔
java中,一個方法呼叫它自身,被稱為方法遞迴。方法遞迴中包含了一種隱藏式的迴圈。它會重複執行某段程式碼,而且不需要迴圈語句控制。 例如有如下數學題。已知一個數列:f(0) =1 、f(1)=4、f(n+2) =2*f(n+1) + f(n),其中n是大於0的整數,求f(1
Java中使用遞迴法
遇到一個問題,給出一個數字,比如10,就算出10×9×8×7……×2×1的結果。 第一個想到的方法: public static int jisuan(int x) { int r = 1; for (int i = 0; i < x; i++) { r =
java 單鏈表反轉 遞迴法 遍歷法
以下是一個例子 package com.haha.demo.util; public class node { static class Node { Integer data; Node next; } static Node readyNode() { Node
java用遞迴篩選法求N以內的孿生質數(孿生素數)--附氣泡排序和插入排序練習
本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,排名前幾的都是用for迴圈來做的,感覺略微麻煩了一些,在比較一些還是覺得用遞迴篩選法來解決這個問題。 新建List<Integer>,然後從第0位開始,如
java經典面試題:單鏈表反轉問題詳解(含遞迴法)
java經典面試題:單鏈表反轉問題,有兩種方法,一種為迴圈遍歷法,一種遞迴法。 1、迴圈遍歷法 首先設定三個節點,把當前節點的下一節點指向它前面的節點,此時你會發現指標鏈會斷,所以要先把它後面一個節點用nextNode儲存下來,之後把節點向後移動遍歷即可。 程式碼如下: //
java用遞迴篩選法求N以內的孿生質數(孿生素數)
本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,排名前幾的都是用for迴圈來做的,感覺略微麻煩了一些,在比較一些還是覺得用遞迴篩選法來解決這個問題。 新建List<Integer>
java實現遞迴函式入門級例子:用遞迴函式求一個數組中的最大值
我們開始把陣列分為兩半,分別找出最大值,那麼這個最大值就是最後的最大值:同時我們左右兩邊繼續細分,停止條件就是細分到單個數值為止。 package chapter1; //使用遞迴求出一個數組中的最小值 public class FindMax { public sta
JAVA通過遞迴遍歷FTP中的檔案以樹形結構顯示(JTree)
1、下載相應的jar包 commons-net-3.6.jar 2、具體程式碼如下 package org.ftp.conntion; import java.io.File; import javax.swing.JFrame; import javax
Java如何在命令列讀取引數 [ 遞迴法實現二分查詢 ]
目的:用Java編寫了一個遞迴實現二分查詢(BinarySearch)的程式,希望能夠在命令列執行:讀取鍵盤輸入的一個整數作為輸入引數key(即 所查詢的數),輸出每次遞迴呼叫二分查詢時的中間數,以及查詢結果(key值在陣列中的位置)。 注:被查詢陣列我設為 int[ ] a = { 0, 1,
MySql、Oracle(通用方法)遞迴查詢生成檔案目錄樹(JAVA實現 遞迴過程中不訪問資料庫,遞迴之前只訪問兩次 進行遞迴前資料準備)
查詢檔案樹 實體類 public class TradeInfoFile { // 檔案編碼(子) private String fileCode; // 所屬檔案編碼(父) private String belongFileCode; // 交易
LeetCode:二叉樹的中序遍歷(遞迴與非遞迴法)
二叉樹結點類: struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x): val(x), left(NULL), right(NULL) {} }
Java中的二分法
技術分享 到你 索引 找到你 ont 返回 family search alt BinarySearch 二分法查找,顧名思義就是要將數據每次都分成兩份然後再去找到你想要的數據,我們可以這樣去想,二分法查找很類似與我們平時玩的猜價格遊戲,當你報出一個價格時裁判會告訴你價格相
java中排序算法
highlight 內部排序 反向 str 常見 -h bsp 排好序 過程 Java中排序可以分為內部排序,外部排序具體如下: 這裏我們討論選擇排序、冒泡排序、快速排序 選擇排序 在要排序的一組數中,選出最小(或者最大)的一個數與第1個位置的數交換;然後在剩下的
Java中經典算法之冒泡排序
控制 ram 小數 冒泡排序 地方 AR pri span mage Java中,數組是最常用的工具,下面具體說一說。 數組聲明的三種方式: 1.數組類型[] 數組名=new 數組類型[數組長度]; 2.數組類型[] 數組名={數組0,數組1,數組2,數組3
非遞迴棧式回溯與遞迴法的幾個問題
1.迷宮求解 2.八皇后 非遞迴 #include <stdio.h> #include <math.h> #include <malloc.h> void nQueens(int *x, int n); /*求解n皇后問題*/ int place
順序表應用7:最大子段和之分治遞迴法(SDUT 3664)
#include <bits/stdc++.h> using namespace std; const int maxn = 50005; int num = 0; struct node { int *elem; int len; }; void Creatlist(
第十四周專案1線性表的折半查詢(遞迴法)
/*Copyright (c) 2015, 煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:H1.cpp * 作者:辛志勐 * 完成日期:2015年12月2日 * 版本號:VC6.0 * 問題描述:線性表的折半查詢(遞迴法) * 輸入描述:無 * 程式輸出:圖
Java 通過遞迴求解漢諾塔問題 原始碼 經典遞迴問題講解
漢諾塔問題描述:有三根柱子 A、B、C ,在A從下向上按照從大到小的順序放著64個圓盤,以B為中介,把盤子全部移動到C上。移動過程中,要求任意盤子的下面要麼沒有盤子,要麼只能有比它大的盤子。 分析:為了將N個盤子從A移動到C,需要先把第N個盤子上面的N-1個盤子移動到B上,這樣才能將第
java:遞迴練習(1000的階乘尾部零的個數)
public class Test7 { public static void main(String[] args) { System.out.println(fun(1000)); } public static int fun(int num) { if(num&g
1002:遞迴法求最大值
Problem Description 設整數序列a1,a2,...,an,給出求解最大值的遞迴程式。 Input 有多組資料,每組第一行為序列長度n(0<n<50),第二行為該整數序列的各元素。 Output 輸出該整數序列中