递归函数问题仔细阅读以下一段递归的函数定义:in tack(int m,int n){if(m==0){return n
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/06 12:45:10
递归函数问题
仔细阅读以下一段递归的函数定义:
in tack(int m,int n)
{
if(m==0)
{
return
n+1;
}
Else if(n==0)
{
return
ack(m-1,1);
}
else
{
retrun
ack(m-1,ack(m,n-1));
}
}
请问ack(3,3)的返回值是( ).
还有请问高手ack()是什么算法,
仔细阅读以下一段递归的函数定义:
in tack(int m,int n)
{
if(m==0)
{
return
n+1;
}
Else if(n==0)
{
return
ack(m-1,1);
}
else
{
retrun
ack(m-1,ack(m,n-1));
}
}
请问ack(3,3)的返回值是( ).
还有请问高手ack()是什么算法,
解题步骤:
1,ack(1,n)=ack(0,ack(1,n-1))+1=ack(1,n-1)+1;
由递推式得:ack(1,n)=n+1;
2,ack(2,n)=ack(1,ack(2,n-1))=ack(2,n-1)+2;
//递推式
由递推式得:ack(2,n)=2n+3;
3,ack(3,n)=ack(2,ack(3,n-1))=2*ack(3,n-1)+3; //递推式
即:ack(3,n)+3=2(ack(3,n-1)+3)
得:ack(3,n)+3=(ack(3,1)+3) * 2^(n-1);
又ack(3,1)=2ack(3,0)+3
ack(3,0)=a(2,1)=5
所以ack(3,1)=13;
所以 ack(3,n)=2^(n+3) -
3;
所以:ack(3,3)=61;
PS:
这个是著名的Ackerman(阿克曼)函数,典型的非原始递归的递归函数,m
1,ack(1,n)=ack(0,ack(1,n-1))+1=ack(1,n-1)+1;
由递推式得:ack(1,n)=n+1;
2,ack(2,n)=ack(1,ack(2,n-1))=ack(2,n-1)+2;
//递推式
由递推式得:ack(2,n)=2n+3;
3,ack(3,n)=ack(2,ack(3,n-1))=2*ack(3,n-1)+3; //递推式
即:ack(3,n)+3=2(ack(3,n-1)+3)
得:ack(3,n)+3=(ack(3,1)+3) * 2^(n-1);
又ack(3,1)=2ack(3,0)+3
ack(3,0)=a(2,1)=5
所以ack(3,1)=13;
所以 ack(3,n)=2^(n+3) -
3;
所以:ack(3,3)=61;
PS:
这个是著名的Ackerman(阿克曼)函数,典型的非原始递归的递归函数,m
定义一个递归函数int sum_of_square(int n)
求 函数递归问题#include sub(int *a,int n,int k); void main() { int
int f(int m,int n) { if(m < n) return 0; if(n==0) return 1;
编写程序自定义的递归函数long power(int m,int n),计算m的n次幂.利用此函数编程序实现:从键盘输入
C语言递归函数问题# include void main(){int age(int n);printf("%d\n",
C语言函数问题.怎么理解递归C语言的问题,if(n==1) return1,if(n>=2)return fact(n-
用递归的方法实现fun函数的定义 :m,n均为正整数 fun (0,n)=n+1; fun (m,0)=m+1; fun
int f(int m,int n) {if(m==0||n==0)return 1; return__________
c++编写程序fun1(int x,int n)体会递归函数的应用
定义一个函数求F=(N+M)!+N!,M,N均为正整数.要求用递归调用
递归函数void UnPrint(void){char c;c=getchar();if(c=='\n'){return
int f(int m,int n) { if(m==0) return 1; if(n==0 || n==m) ret