首页 > 编程学习 > 递归算法(1163~1167)(未完结)

递归算法(1163~1167)(未完结)

发布时间:2022/11/12 9:41:34

递归算法(1163~1167)

  • 1163:阿克曼(Ackmann)函数
  • 1164:digit函数
  • 1165:Hermite多项式
  • 1166:求f(x,n)

1163:阿克曼(Ackmann)函数

【题目描述】
阿克曼(Ackmann)函数A(m,n)中,m,n定义域是非负整数(m≤3,n≤10),函数值定义为:
【输入】
输入m和n。

【输出】
函数值。

【输入样例】

2 3

【输出样例】

9

链接:
1163:阿克曼(Ackmann)函数
代码:

#include<bits/stdc++.h>
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;
}

1164:digit函数

【题目描述】
在程序中定义一函数digit(n,k),它能分离出整数n从右边数第k个数字。

【输入】
正整数n和k。

【输出】
一个数字。

【输入样例】

31859 3

【输出样例】

8

链接:
1164:digit函数
代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,k;
	cin>>n>>k;
	while(k!=1)
	{
		n/=10;
		k--;
	}
	cout<<n%10;
	return 0;
}

1165:Hermite多项式

【题目描述】
用递归的方法求Hermite多项式的值
对给定的x和正整数n,求多项式的值。

【输入】
给定的n和正整数x。

【输出】
多项式的值。

【输入样例】
1 2
【输出样例】
4.00
链接:
1165:Hermite多项式
代码:

#include<bits/stdc++.h>
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;
}

1166:求f(x,n)

【题目描述】
已知
计算x=4.2,n=10以及x=2.5,n=15时的f的值。

【输入】
输入x和n。

【输出】
函数值,保留两位小数。

【输入样例】
4.2 10
【输出样例】
3.68
链接
1166:求f(x,n)
代码:

#include<bits/stdc++.h>
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;
}
Copyright © 2010-2022 dgrt.cn 版权所有 |关于我们| 联系方式