2014年
1、用递归编程
求 ack(int m, int n),定义似乎是
ack(0,n) = n+1;
ack(m,0)=m+1;
ack(m,n) = ack(ack(m-1),ack(n-1));
#include <iostream>
using namespace std;
int ack(int m, int n){
if (m == 0)
return n + 1;
else
if (n == 0)
return m + 1;
else
return ack(m-1,n-1);
}
int main(){
cout << ack(1,2) << endl;
cout << ack(9,3) << endl;
cout << ack(6,4) << endl;
cout << ack(1,49) << endl;
cout << ack(34,41) << endl;
return 0;
}
这段程序的结果是:
我发现这函数总是返回两数之差(大的减小的)加一。
2、写一个 IntToStr(int a)函数 将一个整形数转换为字符串
我尝试想要只保留一个参数,但由于要用到字符数组char s[],不能只返回一个字符指针,所以把字符数组也作为参数。
#include <iostream>
#include <cmath>
#include <string>
using namespace std;
void IntToStr(int a,char s[]){
int count = 0;
while (a) {
s[count] = a % 10 +