程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 遞歸練習,遞歸

遞歸練習,遞歸

編輯:關於C語言

遞歸練習,遞歸


數字累加

素數累加

示例代碼:

#include <iostream>


int sum(int);
int judge(int);
int sumOfPlain(int);
int main(int argc, char** argv) {
    
    //printf("%d\n",sum(3));
    //printf("%d\n",judge(5));
    printf("%d\n",sumOfPlain(10)); //2 3 5 7 
    return 0;
}
int sum(int a){
    if(a<=0){
        return 0;
    }
    else if(a==1){
        return 1;
    }
    else
    return a+sum(a-1);
}
/**
    判斷是否是 素數,是的話,就返回它本身否則就返回0 
*/
int judge(int a){
    //有三種方式第一種是:一直到a-1
    //驗證過是到 a/2  但是 由於不存在 一半兒的這種情況,所以我們不妨多加一個數兒
    //再有就是  一直除到開方,的這個范圍。如果還是除不開,那就除不開了。 
    for(int i=2;i<a/2+1;i++){
        if(a%i==0){
            return 0;
        }
    }
    return a;
}
int sumOfPlain(int a){
    int afterJ = judge(a);
    if(a<=1){
        return 0;
    }
    else if(a==2){
        return 2;
    }
    else{
        return afterJ+sumOfPlain(a-1);
    }
}

 關於遞歸:

遞歸的優點:給某些問題提供了最簡單算法:漢諾塔,二分查找,快速排序,斐波那契數列。缺點:(如果沒有合適的出口)將會很快耗盡計算機的資源,遞歸的程序難以理解和維護對於windows來說 屏幕啊,響應啊各種東西都不動了,但是對於linux來說,系統將會重啟。Linux的內核是這樣寫的,當它的內存裡面沒有可以再利用的空間的時候就會自動重啟。忽然想到了手機。。。自動重啟,就是因為內存沒有了,裡面又是包裝的linux的內核,所以。。。很多android的病毒都是先用一個遞歸讓手機重啟,然後安裝上。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved