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

n遞歸演算法

發布時間: 2022-08-04 02:51:09

1. 設計遞歸演算法生成n個元素的所有排列對象

#include<iostream>
#include<iterator>
#include<algorithm>
using namespace std;

template<class T>
void permutation(T list[], int k, int m)
{
if (k == m)
{
(list, list + m + 1, ostream_iterator<T>(cout, "")); //將當前list排序
cout << endl;
}
else{
for (int i = k; i <= m; i++)
{
swap(list[i], list[k]); //將下標為i的元素交換到k位置,類似從list[k:m]中剔除操作
permutation(list, k + 1, m);
swap(list[i], list[k]);
}
}
}

int main(int argc, char* argv[])
{
char arr[3] = { 'a', 'b', 'c' };
cout << "排序結果如下:" << endl;
permutation(arr, 0, 2);
return 0;

}

(1)n遞歸演算法擴展閱讀

遞歸,在數學與計算機科學中,是指在函數的定義中使用函數自身的方法。也就是說,遞歸演算法是一種直接或者間接調用自身函數或者方法的演算法。

通俗來說,遞歸演算法的實質是把問題分解成規模縮小的同類問題的子問題,然後遞歸調用方法來表示問題的解。

遞歸的基本原理

第一:每一級的函數調用都有自己的變數。

第二:每一次函數調用都會有一次返回。

第三:遞歸函數中,位於遞歸調用前的語句和各級被調用函數具有相同的執行順序。

第四:遞歸函數中,位於遞歸調用後的語句的執行順序和各個被調用函數的順序相反。

第五:雖然每一級遞歸都有自己的變數,但是函數代碼並不會得到復制。

2. N! 遞歸演算法(vb)

Public Function calc(ByVal n As Integer) As Double
Dim kk As Double '這個變數定義的沒有什麼用
If n = 1 Then
calc = 1
Else
calc = n * calc(n - 1)
End If
End Function

3. N! 的遞歸演算法 C或java都可以..

public class text5
{
public static int m1(int m)
{
if(m==1)
return m;
else
return m*m1(m-1);
}
public static void main(String[] args)
{
int n=10;
int a=m1(n);
System.out.println(a);
}
}

java的遞歸法算10的階乘

4. 階乘n的遞歸演算法是什麼

思路:遞歸求階乘函數,如果輸入的參數等於1則返回1,否則返回n乘以該函數下次遞歸。

參考代碼:

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

5. c語言用遞歸法計算n

longff(intn)//函數作用是計算N的階乘
{
longf;
if(n<0)printf("n<0,inputerror");//n不能為負數
elseif(n==0||n==1)f=1;//這里使ff(0)和ff(1)等於1
elsef=ff(n-1)*n;//這里使ff(n)=n*ff(n-1),重要,因為當形參n=n-1時,ff(n-1)=ff(n-2)*(n-1),所以這一步實際實現了n階乘計算,即ff(n)=n*ff(n-1)=n*(n-1)*ff(n-2).....*ff(1)*ff(0),因為ff(0)==ff(1)==1.所以ff(n)=n!實現。
return(f);
}

6. 一個求n!的遞歸演算法 float fun(int n) { if(n==1) return 1; return n*fun(n-1); }的時間復雜度為多少

復雜度為o(n)
遞歸復雜度求法:設T(n)
則根據遞歸式有T(n) = 1+T(n-1)
T(1) = 1
所以T(n) = o(n)

7. c語言算n的階乘的遞歸演算法

思路:遞歸求階乘函數,如果輸入的參數等於1則返回1,否則返回n乘以該函數下次遞歸。

參考代碼:

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

8. 試寫出求遞歸函數F(n)的遞歸演算法,並消除遞歸

你先了解這個函數的作用,結果就是 n*(n/(2^1)*(n/(2^2))*(n/(2^3))*(n/(2^4))……*1
n*(n/2)*(n/4)*(n/8)*……*1
while( n >= 0)
{
if(n !=0)
{ push();//將n壓入棧內
n = n/2
}
else
{
push(n+1);//或者是push(1);
}
}
double result = 1;
while(棧不為空)
{
result = result * pop();//取出值並相乘
}
printf("%lf",result);

這個是偽代碼哈,自己去實現

熱點內容
android輸入法鍵盤 發布:2025-05-14 11:15:48 瀏覽:656
谷歌商店安卓手機在哪裡 發布:2025-05-14 11:13:46 瀏覽:533
編程貓銷售女 發布:2025-05-14 11:13:36 瀏覽:333
安卓卡無翼怎麼出小黑屋 發布:2025-05-14 11:13:00 瀏覽:579
買商用筆記本電腦主要看哪些配置 發布:2025-05-14 11:12:15 瀏覽:949
如何在伺服器里做一把神器 發布:2025-05-14 11:11:19 瀏覽:710
cl編譯選項 發布:2025-05-14 11:09:25 瀏覽:620
自製演算法表 發布:2025-05-14 11:05:18 瀏覽:357
android獲取手機聯系人 發布:2025-05-14 10:59:30 瀏覽:141
電腦怎麼選擇配置 發布:2025-05-14 10:46:12 瀏覽:326