當前位置:首頁 » 操作系統 » 階乘遞歸演算法

階乘遞歸演算法

發布時間: 2022-01-11 13:48:25

⑴ n階乘的非遞歸演算法

#include <stdio.h>

int f(int n)//n的階乘
{
int res=1;
int i;
for(i=1;i<=n;i++)
res*=i;
return res;
}
int main()
{
int n=6;
int no=f(n);
printf("%d\n",no);
return 0;
}
如上n=6;6的階乘

c語言遞歸求階乘

舉例:用遞歸方法求n;

#include<stdio.h>

int main()

{

int n;

int y;

printf("input a integer number:");

scanf("%d",&n);

y=fac(n);

printf("%d!=%d ",n,y);

return 0;

}

int fac(int n)

{

int f;

if(n<0)

printf("n<0,data error!");

else if(n==0||n==1)

f=1;

else

f=fac(n-1)*n;

return(f);

}

(2)階乘遞歸演算法擴展閱讀:

return用法:

return返回一個數值的意思就是把return&lt;表達式&gt;後面表達式的值返回給調用他的函數。舉個例子:

int sum(int i,int j)

{

return i+j;

printf("這個語句不會被執行,因為該子函數執行到上面的return語句就無條件結束了");

}

main()

{

int a=10,b=11,c;

c=sum(a,b);

printf("%d",c);

}

程序的輸出為:

21

這個21從何而來呢main函數調用sum(a,b)函數時將a的值賦給i,b的值賦給j,上面說了return i+j;會計算i+j的值也就是結果等於21,並將21帶回給調用它的函數,即c=sum(a,b);相當於c=21,這個21就是由sum(a,b)中的return反回來的。

⑶ 求階乘n!的遞歸演算法

#include<stdio.h>
int fun(int n)
{
if(n==1||n==0) return 1;//如果參數是0或者1返回1
return n*fun(n-1);//否則返回n和下次遞歸的積
}
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",fun(n));
return 0;
}
/*
5
120
*/

【遞歸演算法的原理】

遞歸是計算機科學的一個重要概念,遞歸的方法是程序設計中有效的方法,採用遞歸編寫
遞歸能使程序變得簡潔和清晰。

⑷ 哪位大神能用c語言遞歸演算法計算n的階乘*(n-1) 的階乘

代碼如下:

//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
unsignedmyfact(intn){
if(n==1||n==0)
return1;
returnn*myfact(n-1);
}
intmain(void){
intn;
unsignedx;
while(1){
printf("Inputn(int0<=n<n<9) n=");//限制到8為不溢出
if(scanf("%d",&n),n>=0&&n<=8)
break;
printf("Overrun,enteragain:");
}
printf("%d!x%d!=%d ",n,n-1,(x=myfact(n-1))*n*x);
return0;
}

⑸ 用java遞歸演算法求一個數字的階乘

用遞歸演算法求一個數字的階乘的程序如下:
public class JieCheng {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("請輸入一個整數:");
int n = in.nextInt();
System.out.println(n+"!="+f(n));
}
static long f(int n){
if (n==1) return 1;
else return n*f(n-1);
}
}
運行結果:
請輸入一個整數:6
6!=720

⑹ 用遞歸的方法計算,計算正整數5的階乘

#include "stdio.h"
int prime(int n)
{
if(n>1)
return n*prime(n-1);
else
return 1;
}
int main()
{
int o;
for(o=1;o<=10;o++)
printf("%d!=%d ",o,prime(o));
}

⑺ C語言遞歸 計算階乘

#include <stdio.h>
void f(int);
main()
{
int n;
unsigned long fac;
scanf("%d", &n);
fac=f(n);
if(fac)
printf("%d",fac);
}
void f(int n)
{
if(n<=0||n>10)
{
printf("error");
return 0;
}
else if(n==1) return 1;
else return n*f(n-1);
}

⑻ 由遞歸方式求的N的階乘(即N,),時間復雜度是多少

每次遞歸內部計算時間是常數,故O(n)。

用遞歸方法計算階乘,函數表達式為f(n)=1 若n=0 f(n)=n*f(n-1),若n>0,如果n=0,就調用1次階乘函數,如果n=1,就調用2次階乘函數,如果n=2,就調用3次階乘函數,如果n=3,就調用4次階乘函數。

(8)階乘遞歸演算法擴展閱讀:

注意事項:

利用遞歸樹方法求演算法復雜度,其實是提供了一個好的猜測,簡單而直觀。在遞歸樹中每一個結點表示一個單一問題的代價,子問題對應某次遞歸函數調用,將樹中每層中的代價求和,得到每層代價,然後將所有層的代價求和,得到所有層次的遞歸調用總代價。

遞歸樹最適合用來生成好的猜測,然後可用代入法來驗證猜測是否正確。當使用遞歸樹來生成好的猜測時,常常要忍受一點兒不精確,因為關注的是如何尋找解的一個上界。

⑼ 在java中,用遞歸方法計算n的階乘。

用Java求鍵盤輸入的數的階乘n。(遞歸演算法)packagejiecheng; importjava.util.*; //導入java.util包中的所有類classrep{ publiclongrep(intn){ longi=0; if(n==0||n==1) i=1;

elsi=n*rep(n-1) returni; } } publicclassJie{ publicstaticvoidmain(String[]args){ intn; //此處定義要輸入的數Scanners= newScanner(System.in); //以下三行用於n的值得輸入System.out.print( "請輸入一個整數:"); n=s.nextInt(); repf= newrep(); System.out.println(n+"!="+f.rep(n)); } }

⑽ C語言怎麼用遞歸法求階乘

1、首先打開vc6.0,新建一個vc項目。

熱點內容
linux恢復誤刪文件 發布:2024-12-23 11:59:36 瀏覽:493
平板電腦賬號登錄伺服器錯誤 發布:2024-12-23 11:41:07 瀏覽:99
金蝶kis專業版資料庫表 發布:2024-12-23 11:35:41 瀏覽:602
相冊已經加密如何改密碼 發布:2024-12-23 11:32:20 瀏覽:277
批量下載鏈接腳本 發布:2024-12-23 11:29:11 瀏覽:973
PHP畫a夢 發布:2024-12-23 11:28:01 瀏覽:199
嗯安一個密碼鎖多少錢 發布:2024-12-23 11:21:19 瀏覽:864
ftp主動被動模式工作流程圖 發布:2024-12-23 11:12:58 瀏覽:10
讓圖片說話有什麼安卓軟體 發布:2024-12-23 11:07:04 瀏覽:269
qq空間上傳視頻要什麼格式的 發布:2024-12-23 11:05:56 瀏覽:594