#P8183. 【CSP第一轮】函数与递归ok
【CSP第一轮】函数与递归ok
- [8 分]阅读程序写结果:
#include < iostream >
using namespace std;
int rSum(int j)
{
int sum = 0;
while (j != 0) {
sum = sum * 10 + (j % 10);
j = j / 10;
}
return sum;
}
int main()
{
int n, m, i;
cin>>n>>m;
for (i = n; i < m; i++)
if (i == rSum(i))
cout<< i <<' ';
return 0;
}
输入:90 120 输出:( {{ input(1) }} )
- [8 分]阅读程序写结果:
#include < iostream >
using namespace std;
const int NUM = 5;
int r(int n)
{
int i;
if (n <= NUM)
return n;
for (i = 1; i <= NUM; i++)
if (r(n - i) < 0)
return i;
return -1;
}
int main()
{
int n;
cin>>n;
cout<< r(n) << endl;
return 0;
}
输入:16 输出:( {{ input(2) }} )
- [8 分]阅读程序写结果
#include < iostream >
#include < string >
using namespace std;
int n,i,j,ans;
string s;
char get(int i)
{
if( i < n) return s[i];
else return s[i-n];
}
int main()
{
cin>>s;
n=s.size();
ans=0;
for(i=1;i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
if(get(i+j) < get(ans+j))
{
ans=i;
break;
}
else if(get(i+j) > get(ans+j)) break;
}
for(j=0;j<=n-1;j++) cout << get(ans+j);
cout<< endl;
return 0;
}
输入:CBBADADA 输出:( {{ input(3) }} )
- [8 分]阅读程序写结果:
#include < iostream >
using namespace std;
int fun(int n)
{
if(n == 1)
return 1;
if(n == 2)
return 2;
return fun(n - 2) - fun(n - 1);
}
int main()
{
int n;
cin >> n;
cout << fun(n) << endl;
return 0;
}
输入:7 输出:( {{ input(4) }} )
- [8 分]阅读程序写结果:
#include < iostream >
using namespace std;
int n, m;
int findans(int n, int m) {
if (n == 0) return m;
if (m == 0) return n % 3;
return findans(n - 1, m) - findans(n, m - 1) + findans(n - 1, m - 1);
}
int main(){
cin >> n >> m;
cout << findans(n, m) << endl;
return 0;
}
输入:5 6 输出:( {{ input(5) }} )
- [2 分]设A是一个实数的数组,考虑下面的递归算法:
XYZ (A[1..n])
1. if n= 1 then return A[1]
2. else
3. temp ← XYZ (A[l..n-1])
4. if temp < A[n]
5. then return temp
6. else return A[n]
请问算法 XYZ 的输出是什么?( {{ select(6) }} )。
- A数组的平均
- A数组的最小值
- A数组的中值
- A数组的最大值
- [2 分]考虑如下递归算法,则调用solve(7)得到的返回结果为( )。
1 solve(n)
2 if n<=1 return 1
3 else if n>=5 return n*solve(n-2)
4 else return n*solve(n-1)
{{ select(7) }}
- 105
- 840
- 210
- 420
- [2 分]以下对递归方法的描述中,正确的是( {{ select(8) }} )
- 递归是允许使用多组参数调用函数的编程技术
- 递归是通过调用自身来求解问题的编程技术
- 递归是面向对象和数据而不是功能和逻辑的编程语言模型
- 递归是将用某种高级语言转换为机器代码的编程技术
- [2 分]在程序运行过程中,如果递归调用的层数过多,会因为( {{ select(9) }} )引发错误。
- 系统分配的栈空间溢出
- 系统分配的堆空间溢出
- 系统分配的队列空间溢出
- 系统分配的链表空间溢出