数据结构学习笔记之递归的应用

来源:互联网 发布:巡更棒作弊软件 编辑:程序博客网 时间:2024/06/05 18:52
求斐波那契数列的一个小程序,当时看的时候觉得人家会数据结构的就是牛啊!短短几步就搞定了,就给记录下来了,以后好借鉴:
#include <stdio.h>int fibonacci(int n){    if( n > 1 )    {        return fibonacci(n-1) + fibonacci(n-2);    }    else if( n == 1 )    {        return 1;    }    else if( n == 0 )    {        return 0;    }}int main(){    int i = 0;        for(i=1; i<=10; i++)    {        printf("fibonacci(%d) = %d\n", i, fibonacci(i));    }        return 0;}

下面是求一个字符串的长度,也是使用递归的解法:

#include <stdio.h>int strlen(const char* s){    if( s == NULL )    {        return -1;    }    else if( *s == '\0' )    {        return 0;    }    else    {        return strlen(s+1) + 1;    }}int main(){    printf("strlen(\"12345\") = %d\n", strlen("12345"));    printf("strlen(NULL) = %d\n", strlen(NULL));    printf("strlen(\"\") = %d\n", strlen(""));        return 0;}
递归有个经典的问题,就是有三个柱子,现在要把一个柱子上的盘子放到另一个柱子,可以借助其中一个柱子,但是每次移动的时候都要求小盘子在上大盘子在下。求移动顺序

#include <stdio.h>void hanno(int n,char a,char b,char c){if(n>0){if (n==1){printf("%c->%c\n",a,c);}else {hanno(n-1,a,c,b);//借助C把a的值先移到b printf("%c->%c\n",a,c);//然后最下面的一个盘子就可以直接从a移到Channo(n-1,b,a,c);//借助C把a的值先移到b }}}int main(){hanno(3,'a','b','c');return 0;}
递归的用法真好,以后要多多使用

0 0
原创粉丝点击