遞歸簡述

算法小白又來啦~本博客僅用來學習過程中的記憶,寫的不好,大佬們勿噴..

遞歸定義:遞歸做爲一種算法在程序設計語言中廣泛應用.是指函數/過程/子程序在運行過程序中直接或間接調用自身的現象,這種程序調用自身的編程技巧稱爲遞歸(rercursion)

所以遞歸的思想是調用自身,那麼一個程序段或函數功能的設計就顯得尤爲重要,因爲畢竟內部還需要調用本身。

舉個栗子:

角谷定理。輸入一個自然數,若爲偶數,則把它除以2,若爲奇數,則把它乘以3加1。經過如此有限次運算後,總可以得到自然數值1。求經過多少次可得到自然數1。
如:輸入22
       輸出 22 11 34 17 52 26 13 40 20 10 5 16 8 4 1

代碼實現如下:

#include<stdio.h>

void Jg(int *count,int n);

int main(){
    int count=0;
    Jg(&count,22);
    printf("%d",count);
}

void Jg(int *count,int n){
    if(n!=1){
        if(n%2==0){
            n=n/2;
        }
        else{
            n=n*3+1;
        }
        (*count)++;
        Jg(count,n);
    }
}

這個算法中的Jg算法即接受傳入count的地址和需要計算的初始值n以及中間生成的n;

在內部判斷完中間n之後在內部繼續調用;

所以~算法好難~好好學吧~skrskr

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章