栈用于递归函数:
#include<stdio.h>
int Fib(int n){ // 自定义函数
if (n<0)
return -1;
else if (n == 0)
return 0;
else if (n == 1)
return 1;
else
return Fib(n - 1) + Fib(n - 2);
}
int main(){
int num = 2;
printf("请输入要求取的第n项斐波那契数列 n=");
if (scanf_s("%d", &num)){
if (num >= 0){
printf("%d", Fib(num));
}
else
printf("Error!!!");
}
system("pause");
return 0;
}
![](https://img.haomeiwen.com/i1249717/10a88ad8886f89a5.png)
image.png
需要将计算的值 返回 ;声明一个变量接收(需要声明)弹栈给上一级的栈 函数 运算使用:如:int f ; f = Fib() - Fib();return f;
![](https://img.haomeiwen.com/i1249717/b09adcf01669f366.png)
image.png
Ackerman函数
定义:
{ n+1; m=0,n>0
A(m,n) = { A(m-1,1); n=0,m>0
{ A(m-1,A(m,n-1)) n>0,m>0
int ack(int m,int n)
{
if(m == 0)
return n+1;
else if(n == 0)
return ack(m-1,1);
else
return ack(m-1,ack(m,n-1));
}
网友评论