C编程练习-递归

如果函数递归缺少出口设置,容易出现类似死循环的效果,且很快内存耗光程序异常结束
注意:如果能用循环解决的问题,不要用递归,因为递归比循环更耗时耗内存

1.使用递归解决计算第N项斐波那切数列

斐波那契数列:F(0)=1,F(1)=1, F(n)=F(n - 1)+F(n - 2)(≥ 2,∈ N*)

1,1,2,3,5,8,13,21,34,55,89...

代码:

#include<stdio.h>

int func_f(int n)
{
    if(1 == n || 2 == n)  return 1;
    return func_f(n-1) + func_f(n-2);
}

int main(int argc,const char* argv[])
{
    printf("%d \n",func_f(5));
}

2.使用递归模拟N层汉诺塔的移动过程

#include<stdio.h>

//s起点 m中间点 e终点
void hanio(int n,char s,char m, char e)
{
    if(1 == n)
    {
        printf("%d from %c to %c\n",n,s,e);
        return;
    }
    hanio(n-1,s,e,m);
    printf("%d from %c to %c\n",n,s,e);
    hanio(n-1,m,s,e);
}

int main(int argc,const char* argv[])
{
    hanio(4,'A','B','C');
}

 

posted @ 2023-07-28 16:09  冲他丫的  阅读(49)  评论(0)    收藏  举报