天天看點

05.C(遞歸函數)

(建立于2017/8/16)

1.前置遞歸和後置遞歸

前置是倒叙,後置是正序

2.遞歸十進制轉二進制

#include<stdio.h>
#include<string.h>

int to2(int n)
{
    
    int i = n % 2;
    if (n>0)
    {
        printf("%d\n", i);
        to2(n / 2);
        
    }
}

int main() 
{
    to2(11);
}

           

3.遞歸求字元串長度

#include<stdio.h>
#include<string.h>

int getstrlen(char s[], int n)
{
    if (s[n])      //以第n個位置的元素是否為0作為遞歸結束你的标記
    {
        return getstrlen(s, n + 1);
    }
    else
    {
        return n;
    }
}

int main() 
{
    char s[] = "renzhenmingshigehaoren";
    printf("長度是:%d\n",getstrlen(s, 0));
}
           

4.遞歸求斐波那契數列中某一個index的值

#include<stdio.h>
#include<string.h>
//斐波那契數列,0,1開頭,後邊的規律是每個數字等于前兩個數字的和
int fib(int m) {
    if (m == 0)
    {
        return 0;
    }
    else if (m == 1)
    {
        return 1;
    }
    else
    {
        return fib(m - 1) + fib(m-2);
    }
}
int main() 
{
    printf("斐波那契數列中第%d個數是:%d\n",6,fib(6));
}