【题目描述】
阿克曼(Ackmann)函数A(m,n)中,m,n定义域是非负整数(m≤3,n≤10),函数值定义为:
【输入】
输入m和n。
【输出】
函数值。
【输入样例】
2 3
【输出样例】
9
【链接】
1163:阿克曼(Ackmann)函数
【代码】
#include
using namespace std;
int akm(int m,int n)
{
if(m==0)return n=n+1;//n+1 (m=0时)
if(m>0&&n==0)return akm(m-1,1);//akm(m−1,1) (m>0,n=0时)
if(m>0&&n>0)return akm(m-1,akm(m,n-1));//akm(m−1,akm(m,n−1)) (m,n>0时)
}
int main()
{
int n,m;
cin>>m>>n;
cout<<akm(m,n)<<endl;
return 0;
}
【题目描述】
在程序中定义一函数digit(n,k),它能分离出整数n从右边数第k个数字。
【输入】
正整数n和k。
【输出】
一个数字。
【输入样例】
31859 3
【输出样例】
8
【链接】
1164:digit函数
【代码】
#include
using namespace std;
int main()
{
int n,k;
cin>>n>>k;
while(k!=1)//数位分离
{
n/=10;
k--;
}
cout<<n%10;
return 0;
}
【题目描述】
用递归的方法求Hermite多项式的值
对给定的x和正整数n,求多项式的值。
【输入】
给定的n和正整数x。
【输出】
多项式的值。
【输入样例】
1 2
【输出样例】
4.00
【 链接】
1165:Hermite多项式
【代码】
#include
using namespace std;
double h(int n,int x)
{
if(n==0)return 1;
if(n==1)return 2*x;
if(n>1)return 2.00*x*h(n-1,x)-2*(n-1)*h(n-2,x);
}
int main()
{
int n,x;
cin>>n>>x;
printf("%.2lf",h(n,x));
return 0;
}
【题目描述】
已知
计算x=4.2,n=10以及x=2.5,n=15时的f的值。
【输入】
输入x和n。
【输出】
函数值,保留两位小数。
【输入样例】
4.2 10
【输出样例】
3.68
【链接】
1166:求f(x,n)
【代码】
#include
using namespace std;
double f(double x,double n)
{
if(n==1)return n+x;
return sqrt(f(x,n-1))+n;
}
int main()
{
double x,n;
cin>>x>>n;
printf("%.2lf",sqrt(f(x,n)));
return 0;
}
【题目描述】
已知
用递归函数求解。
【输入】
第一数是x的值,第二个数是n的值。
【输出】
函数值。
【输入样例】
1 2
【输出样例】
0.40
【链接】
1167:再求f(x,n)
【代码】
#include
using namespace std;
double f(int x,int n)
{
if(n==1)return 1+x;
return n+x/f(x,n-1);
}
int main()
{
int x,n;
cin>>x>>n;
printf("%.2lf",x/f(x,n));
return 0;
}