C語言:遞迴和非遞迴分別實現求n的階乘
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include "stdlib.h"
#include<stdio.h>
//遞迴方法實現N的階乘
int fac1(int n)
{
if (n == 1)
{
return 1;
}
return n *fac1(n - 1);
}
//非遞迴方法實現N 的階乘 int fac2(int n) { int sum = 1; int i; for (i=n;i>0;i--) { sum *= i; } return sum; }
int main()
{
int n = 0;
printf("請輸入:");
scanf("%d", &n);
int b = 0;
int a = 0;
a = fac1(n);
b = fac2(n);
printf("遞迴結果:%d\n", a);
printf("非遞迴:%d\n", b);
system("pause");
return 0;
}
相關推薦
C語言:遞迴和非遞迴分別實現求n的階乘
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include "stdlib.h" #include<stdio.h> //遞迴方法實現N的階乘 int fac1(int n
C語言:遞迴和非遞迴實現二分查詢
二分查詢是將有序數列不斷地縮小,直到找到改元素或折半區域的首元素位置高於尾元素位置為止。//遞迴寫二分查詢 int BinarySearchD(int arr[], int x, int begin,
二叉樹的前序,中序,後序的遍歷的遞迴和非遞迴程式碼-C語言
#include <stdio.h> #include<stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or input l
[C語言]用遞迴和非遞迴的方法在楊氏矩陣中查詢
從楊氏矩陣中查詢數字,以及調整奇數位於陣列的前半部分 //從楊氏矩陣中查詢數字 //1.從右上角開始找,如果要找的值大於當前值,向下找,否則,向左找,方向確定 //2.從左下角開始找,如果要找的值大於當前值,向右找,否則,向上找,方向確定 //---->最
二叉樹中序遍歷(遞迴和非遞迴)演算法及C語言實現
二叉樹中序遍歷的實現思想是: 訪問當前節點的左子樹; 訪問根節點; 訪問當前節點的右子樹; 圖 1 二叉樹 以圖 1 為例,採用中序遍歷的思想遍歷該二叉樹的過程為: 訪問該二叉樹的根節點,找到 1; 遍歷節點 1 的左子樹,找到節點 2; 遍歷節點 2 的左子樹,找到節點 4;
C語言二叉樹的遍歷,遞迴和非遞迴
程式碼包含如下幾個檔案: 下面一一貼出來: Stack.h檔案: #ifndef STACK_H_ #define STACK_H_ #include "BinaryTree.h" #include <stdbool.h> #define STACK_INI
二分查詢遞迴和非遞迴實現(c語言實現)
#include<stdio.h>++ int seeqSearch(int a[],int n,int k){ int i=n-1; for(;i>=0;i--){//遍歷陣列 if(a[i]==k){//找到對應的陣列
[c語言]用遞迴和非遞迴求第n個斐波那契數
程式碼 //1.1遞迴求第n個斐波那契數 #include<stdio.h> int fib(int n) { if(n<=2) return 1; else return fib(n-1)+fib(n-2); } int main
【c語言】遞迴和非遞迴的相互轉換
前面已經介紹過遞迴的相關概念這裡不多介紹,直接介紹轉換方法: 一、遞迴轉非遞迴的兩種方法 1、一般根據是否需要回溯可以把遞迴分為簡單遞迴和複雜遞迴,簡單遞迴就是根據遞迴式來找出遞推公式(這也就引申出分治思想和動態規劃) 2、複雜遞迴一般就是模擬系統處理遞迴
No.19程式碼練習:斐波那契數列,某數k次冪,模擬實現strlen(),階乘 ,逆置字串(遞迴和非遞迴)
學習不易,需要堅持。 遞迴 程式呼叫自身的程式設計技巧稱為遞迴( recursion)。遞迴做為一種演算法在程式設計語言中廣泛應用。 一個過程或函式在其定義或說明中有直接或間接呼叫自身的一種方法,它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞迴策略只需
c++二叉樹的遞迴和非遞迴的前序中序和後序遍歷以及層序遍歷
二叉樹的遞迴版的前序,中序和後序遍歷很簡單也很容易理解,這裡就放一個前序遍歷的例子 //前序遍歷遞迴演算法,遞迴演算法都大同小異,這裡就不一一列舉了 void binaryTree::pro_order(NodeStack::Node *t) { NodeStack::Node *h = t;
全面分析再動手的習慣:連結串列的反轉問題(遞迴和非遞迴方式)
https://www.cnblogs.com/kubixuesheng/p/4394509.html dashuai的部落格 要麼牛B!要麼滾! 首頁 聯絡 訂閱 管理 隨筆-88 文章-0
劍指offer:遞迴和非遞迴實現
題目描述: 大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。 n<=39 什麼是斐波那契數列 斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(L
Java資料結構:二叉樹的前序,中序,後序遍歷(遞迴和非遞迴)
嚶嚶嚶,兩個月沒寫部落格了,由於有點忙,今天開始日更部落格。 今天總結一下學習樹的先根,中根,後根。每種兩種方法,遞迴和非遞迴。 先根: 遞迴: 思路:先根遍歷,即第一次遇到的結點就開始列印。先一直遍歷左子樹,直到未空,然後右子樹,直到為空。遞迴下去。 過程:先將1進入方法
三種方法:遞迴和非遞迴分別實現strlen
不使用庫函式來實現strlen函式: 方法1:設定一個計數器len,當str不是‘\0’時,len++; 方法2:採用遞迴的想法,將大事化小;“abcde”可是轉化為1+“bcde” … 1+1+1+1+“e”。每一次都訪問str的下一個地址,當然跳出遞迴的條件
全排列的遞迴和非遞迴實現(permutation)(C++)
全排列問題 以下是C++程式碼實現: //Permutation1 和 permutation2 分別是基於遞迴和非遞迴的實現,都可以實現去除重複的排列 //讀者也可以自己提交之後到leet
實驗三:二叉樹的操作(結構轉換,遞迴和非遞迴的先序、中序和後序遍歷,以及層次遍歷,葉子結點和總結點的計數)
(1)將一棵二叉樹的所有結點儲存在一維陣列中,虛結點用#表示,利用二叉樹性質5,建立二叉樹的二叉連結串列。 (2) 寫出對用二叉連結串列儲存的二叉樹進行先序、中序和後序遍歷的遞迴和非遞迴演算法。 (3)寫出對用二叉連結串列儲存的二叉樹進行層次遍歷演算法。 (4)求二叉樹
JAVA實驗二:編碼實現一個類對輸入陣列的數從小到大排序同時使用二分法查詢某一個數(遞迴和非遞迴)
編碼實現一個類 (1)提供一個靜態方法,可以將輸入的一個int[]陣列按照從小到大的順序排列; (2)提供靜態方法,對排好序的陣列使用折半(二分)查詢(使用遞迴和非遞迴兩種形式分別實現)查詢某一個整數。 答案 import java.util.*; public class
c/c++英文句子中單詞逆置(遞迴和非遞迴實現)
遞迴實現: #include <iostream> using namespace std; void change() { char str[1024] = {0}; if (scanf("%s", str) != EOF) { change(); } el
用shell指令碼語言實現一個斐波那契數列的遞迴和非遞迴版本
程式碼: #!/bin/bash -x #第一種寫法 #first=1 #second=1 #last=1 # #if [ $1 -le 2 ];then # echo 1 #fi # #i=3 #while [ $i -le $1 ] #do # let last=