日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

递归函数(C语言)

發(fā)布時間:2023/12/14 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 递归函数(C语言) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、定義

遞歸函數(shù):直接或者間接調(diào)用函數(shù)自身

2、使用方式?

1)使用環(huán)境

解決問題的時候,解決問題的思路轉(zhuǎn)化與問題本身的問題。

2)設(shè)計思路

1、明確問題是否符合遞歸函數(shù)的函數(shù)模型

2、思考需要實現(xiàn)的功能與參數(shù)之間的關(guān)系

3、遞歸到一定程度可以得出問題的解,并且有一個結(jié)束函數(shù)可以跳出遞歸

4、要呈現(xiàn)出第n層與第n-1層的遞推關(guān)系

3)實例分析

問題:設(shè)計一個遞歸函數(shù),實現(xiàn)求一個一維數(shù)組元素和的功能

1、????????求和 --> a[0]+a[1]+.......+a[n-1]+a[n]

? ? ? ? ??????符合遞歸模型

2、? ? ? ? a[n]+a[n-1]

3、? ? ? ? 遞歸到a[1]+a[0],既可以跳出遞歸

int array_sum(int a[], int n) {if(n == 1)//當(dāng)n等于1的時候,就可以跳出循環(huán),因為在下面的遞歸里面已經(jīng)實現(xiàn)a[1]+a[0]{return a[0];}else{return array_sum(a,n-1)+a[n-1];//因為n表示一維數(shù)組的數(shù)目,所以表示角標(biāo)的時候要使用n-1} }

3、快速排序(遞歸思想)

1、對于一個數(shù)組,從中間位置選擇一個元素,以該元素為界 將其余元素劃分成兩個子集
2、一個子集中所有的元素都小于該元素,另外一個子集的所有元素都大于該元素
3、對這樣的兩個子集 遞歸 執(zhí)行這一過程
4、當(dāng)某一個子集的元素個數(shù)小于2時,這個子集就不需要再排序,終止遞歸

#include <stdio.h> void swap(int a[], int i, int j) {int temp = a[i];a[i] = a[j];a[j] = temp; }void QiuckSort(int a[], int left, int right) {if( left >= right){return ;}//1.選中一個元素,將數(shù)組劃分成兩個子集swap(a, left, (left+right)/2);int i;int last = left; //代表左邊子集的最后一個元素的下標(biāo)for(i=left+1; i<=right; i++){if(a[left] > a[i]){swap(a, i, ++last);}}swap(a, last, left); //2.左邊的子集QiuckSort(a, left, last-1);//3.右邊的子集QiuckSort(a, last+1, right); }int main() {int a[10];int i;for(i=0; i<10; i++){scanf("%d", &a[i]);}QiuckSort(a, 0, 9);for(i=0; i<10; i++){printf("%d ", a[i]);}putchar('\n'); }

總結(jié)

以上是生活随笔為你收集整理的递归函数(C语言)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。