C語言簡單記-函數、遞歸

「C語言簡單記」基於我之前學習過程當中作過的筆記、隨筆,特地整理了一下,只是簡單的記錄了一些比較重要的知識點,不會去深刻探究,面向的是一些有語言基礎的人查找閱讀,還請見諒,謝謝~~~算法


函數

返回值類型 函數名(參數類型 形式參數1,參數類型 形式參數2,…)
{
    函數體
}
  • 主要做用:
    1.將一個經常使用的功能封裝起來,方便之後調用
    2.提升代碼重用率函數

  • 形參: 在定義函數時,函數名後面的小括號()中定義的變量稱爲形式參數,簡稱形參,形參必定是變量
    形參變量只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。所以,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變量。學習

  • 實參: 在調用函數時傳入的值稱爲實際參數,簡稱實參,實參能夠是常量,變量,表達式code

  • 注意點:遞歸

    1) 返回值能夠和返回值類型不同,系統會對返回值進行自動類型轉換(隱式轉換)
    2) 若是函數沒有返回值,那麼返回值類型就寫void
    3) 函數名稱不能相同,形參,返回值類型不一樣也不行,即不能重載
    4) c語言不容許函數嵌套
    5) 函數能夠沒有返回值類型,默認返回int類型
    6) 調用函數時傳遞的實參個數必須和函數的形參個數必須保持一致
  • return 0: 返回0表示程序正確結束,其餘值表明程序非正常結束內存

  • argc: 系統傳遞進來的參數,默認爲1開發

  • argv: 系統傳遞進來的參數的實際值,默認是程序的名稱博客


遞歸練習

需求:要求用戶輸入一個大於0的數,如何不大於0一值提示,知道大於0爲止

#include <stdio.h>

void scanNumber();

int main(int argc, const char * argv[]) {

    scanNumber();
    return 0;
}


void scanNumber(){

    // 接收值
    printf("請輸入一個大於0的數字:\n");
    int number = -1;
    scanf("%d", &number);

    // 判斷
    if (number <= 0) {
        scanNumber();
    }else{
        printf("m=%d\n", number);
    }
    // 遞歸要有明確的結束條件,防止死循環
}

用遞歸算法求累加和、累乘io

#include <stdio.h>

int sum(int a); // 求累加和
int mul(int b);// 求累乘

int main(){
    // 接收值
    printf("請輸入一個大於0的數字:\n");
    int number = -1;
    scanf("%d", &number);

    printf("sum = %d\n", sum(number));
    printf("mul = %d\n", mul(number));
    return 0;
}

int sum(int a){
    int result = 1;
    if(a == 1){
        return result;
    }else{
        return sum(a-1) + a;
    }
}
int mul(int b){
    int result = 1;
    if(b == 1){
    return result;
    }else{
        return uml(b-1) * b;
    }
}

函數的嵌套調用與遞歸調用有什麼區別?

答:
    函數的嵌套是語言特性,遞歸是邏輯思想;

    函數嵌套就是容許函數中調用另外一個函數,

    遞歸經過函數嵌套來實現,本身調用本身,

    總的來講,函數嵌套就是函數調用函數,遞歸就是函數調用本身,是函數嵌套的一個特例

更多關於iOS學習開發的文章請登錄個人我的博客www.zhunjiee.com,歡迎前來參觀學習class

相關文章
相關標籤/搜索