我是靠谱客的博主 听话飞鸟,最近开发中收集的这篇文章主要介绍栈的应用——递归,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

void main(){
int a,b,c;
func1(a,b);
c=a+b;
}
void func1(int a, int b){
int x;
func2(x);
x=x+100;
}
void func2(int x){
int m,n;
}

1.函数调用的特点:最后调用的函数是最先执行结束的(LIFO)

2.函数调用时,需要用一个栈来存储:

调用返回地址、实参、局部变量

main函数一层一层压下去

3.适合递归解决的问题:

可以把原始问题转化为属性相同,但规模较小的问题。

递归算法要注意递归表达式和边界条件(递归出口)

eg:递归算法求阶乘 

#include <stdio.h>
int factorial (int n){
if(n==0 || n==1)
return 1;
else
return n*factorial(n-1);
}
int main(){
int x =factorial(10);
printf("成功了");
}

递归调用时,函数调用栈可称为“递归工作栈”

每进入一层递归,就将递归调用所需信息压入栈顶

没退出一层递归,就从栈顶弹出信息

//递归算法求斐波那契数列
#include <stdio.h>
int Fib(int n){
if(n==0)
return 0;
else if(n==1)
return 1;
else
return Fib(n-1)+Fib(n-2);
}
int main(){
int x =Fib(4);
printf("成功了!");
}

缺点:

效率低,太多层递归可能会导致栈溢出,可能会包含很多重复计算

最后

以上就是听话飞鸟为你收集整理的栈的应用——递归的全部内容,希望文章能够帮你解决栈的应用——递归所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部