遞迴法和迴圈法求n!
遞迴法和迴圈法求n!
思路分析:迴圈法:呼叫for迴圈,依次累乘
遞迴法: 遞推關係:n*Fun(n-1);Fun()為求階乘函式;
出口:n<2;
完整程式:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
int jiecheng1(n){//迴圈法
int i , sum = 1;
for (i = 1; i <=n; i++){
sum *= i;
}
return sum;
}
int jiecheng2(n){//遞迴法 遞推關係:n*Fun(n-1)
if (n<2){ //出口 n<2;
return 1;
}return n*jiecheng2(n - 1);
}
int main(){
int n;
printf("請輸入一個數:\n");
scanf("%d", &n);
printf("%d的階乘為%d\n", n, jiecheng1(n));
printf("%d的階乘為%d\n", n, jiecheng2(n));
system("pause");
return 0;
}
相關推薦
遞迴法和迴圈法求n!
遞迴法和迴圈法求n! 思路分析:迴圈法:呼叫for迴圈,依次累乘 遞迴法: 遞推關係:n*Fun(n-1);Fun()為求階乘函式; 出口:n<2; 完整程式: #define _CRT_SECURE_NO_WARNINGS #include<stdio
n皇后問題(回溯法-遞迴法和迴圈法)
n皇后問題簡單解釋 對於一個n*n的棋盤來說,皇后如果是同行同列或者是在同一斜對角上,就是會相互擊殺。 所以,我們需要找到一個安全的(使得所有皇后之間不相互擊殺)安排方式。 遞迴版本 #include
二分查詢的遞迴實現和迴圈實現
用遞迴的方法實現二分法查詢(二分法查詢的前提是資料有序) #include <stdio.h>#include <stdlib.h>// 二分查詢-資料有序int _binary_find(int arr[],int left,int right,int key){ if(lef
Add Two Numbers[leetcode]遞迴版本和迴圈版本
我寫了兩個版本供參考: 遞迴版本 ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { return addTwoNumbers
使用迴圈和遞迴方法實現二分法搜尋
對於已排序的序列,實現二分法搜尋演算法,有迴圈和遞迴兩種策略。 對於這種演算法,中心點一直是一個開區間,因此下一次搜尋時新區間應該相應的+-1,從而最終start>end # -*- codin
day13 內建函式二 遞迴,匿名函式,二分法
1.匿名函式 1.語法 lambda 引數:返回值 2.引數可以有多個,用逗號隔開 3.只能寫一行,執行結束後直接返回值 4返回值和正常函式一樣,可以是任意值 5.列: f=lambda n:n**n #傳入一個數n,返回她的n次方 print(f(10))
彙編-遞迴求n!
參考https://blog.csdn.net/baidu_33836580/article/details/50578877 遞迴計算8!(40320<2^16) ;彙編程式中main是使用者自定義識別符號,可有可無 ;start是程式起始入口點,start 和end start
資料結構實驗-C語言-二叉樹的建立,前、中、後序遍歷的遞迴演算法和非遞迴演算法,求葉子結點數目,求二叉樹深度,判斷二叉樹是否相似,求二叉樹左右子樹互換,二叉樹層序遍歷的演算法,判斷二叉樹是否是完全二叉樹
1.實驗目的 熟練掌握二叉樹的二叉連結串列儲存結構的C語言實現。掌握二叉樹的基本操作-前序、中序、後序遍歷二叉樹的三種方法。瞭解非遞迴遍歷過程中“棧”的作用和狀態,而且能靈活運用遍歷演算法實現二叉樹的其它操作。 2.實驗內容 (1)二叉樹的二叉連結串列的建立 (2)二叉樹的前、中、後
兩種方法對浮點數求根號(二分法和牛頓法)
二分法和牛頓法求根號是面試中的經典題,如果沒提前接觸過,經典題將成為經典難題。我先上程式碼,後面再對程式碼進行解釋: #include<iostream> #include<string> #define PRECISION 0.0002 using
二分查詢(使用遞迴方式和使用非遞迴迴圈的方式來實現)
二分查詢是一種查詢效率非常高的查詢演算法。又稱折半查詢。 二分查詢演算法思想 有序的序列,每次都是以序列的中間位置的數來與待查詢的關鍵字進行比較,每次縮小一半的查詢範圍,直到匹配成功。 一個情景:將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否
牛頓法和割線法方程求根(C語言)
1 . 實驗目的 (1) 通過對二分法與牛頓迭代法作程式設計練習與上機運算,進一步體會二分法與牛頓迭代法的不同特點。 (2) 編寫割線迭代法的程式,求非線性方程的解,並與牛頓迭代法作比較。
python遞迴函式及二分法查詢
函式的遞迴: 在一個函式的內部呼叫自己 死迴圈: 可以無限迴圈,不會停止 while True: print('我不是遞迴') 遞迴: 不是死迴圈,有最大迴圈深度 def story(): print('我是遞迴') story() story() 超過了遞迴的最大深度報錯
求出100以內的所有素數--篩選法和根號法
/** * 篩選法求出100以內的所有素數,即從小到大篩去一個已知素數的所有倍數 * * 素數:只能被1和本身整除 * * 根號法:素數不能被2~sqrt(n)整除 */ package t; import java.util.*; import java.
用遞迴或者for迴圈求1-20的乘積的幾種簡單實現
// 通過遞迴求1-20的乘積 function cj(n) { if (n >= 2) return n * cj(n - 1); else return n; } cj(20); // 或者 function cj(n) { if (n <= 19) return n * c
蠻力法和分治法 求最近對問題——Java 實現
public class ClosestPair2{ public static void main(String[] args) { /** *輸入需要比較的點的對數存在變數n中 */ Scanner in=new Scanner(System.in); System.out.println(
java中的遞迴方法和for迴圈
一、含義 遞迴演算法是一種直接或間接地呼叫自身的演算法。在計算機編寫程式中,遞迴演算法對解決一大類問題是十分有效的,它往往使演算法的描述簡潔而且易於理解。 二、例子 99乘法表的例子 1:普通實現99乘法表太簡單,是個程式設計師都會,實現如下: 1 2 3 4 5 6 7 8 9
POJ2069 最小球覆蓋 幾何法和退火法
集中 names ios .com .html 一個 i++ blog 穩定 對這種問題不熟悉的讀者 可以先去看一看最小圓覆蓋的問題 ZOJ1450 現在我們來看最小球覆蓋問題POJ2069 題目很裸,給30個點 求能覆蓋所有點的最小球的半徑。 先給出以下幾個事實: 1.對
黑盒測試用例設計-功能圖法和場景法(八)
重新 感覺 結果 軟件 簡單 可能 遷移 面向 通話 7.功能圖法 一個程序的功能包括靜態和動態說明。動態說明描述輸入數據的次序或轉移的次序,和業務流程緊密對應。靜態說明描述了輸入輸出條件之間的對應關系。對於面向市場的產品,其邏輯復雜、組合龐大,必須用動態說明
冒泡算法和二分法查找
return div emp 數組 ati 二分法查找 i+1 tag 冒泡算法 1.對一個整形數組進行冒泡排序 public static void mp(int []a){ for(int i=0;i<a.length;i++){ for(int j
python的冒泡法和二分法的總結
left 二分法 就是 重新定義 必須 大小 right 序列 print 一:二分法 首先介紹二分法 二分法查找,每次能夠排除掉一半的數據,查找的效率非常高,但是局限性比較大,必須是有序的序列才可以使用二分法查找 要求:查找的序列必須是有序序列 ----------