递归法
(1)母牛的数量 一只母牛没年初一生下一只小母牛,小母牛在4年以后生下一只小母牛。
#include<iostream>
using namespace std;
int getNum(int n){
if (n <= 4){
return n;
}
else{
return getNum(n - 1) + getNum(n - 3);
}
}
int main(){
int n;
cin >> n;//输出第n年的母牛的数量 递归公式为 if n<=4 f[n]=n if n>4 f[n]=f[n-1]+f[n-3]
cout << getNum(n) << endl;
system("pause");
return 0;
}
(2)按顺序输出十进制数 通过递归,而不通过数组空间
#include<iostream>
using namespace std;
void print_num(int n){
if (n < 10){
cout << n << " ";
}
else{
//递归调用
print_num(n / 10);//递归调用返回到这里时在输出个位数字
cout << n % 10 << " ";
}
}
int main(){
int n;
cin >> n;
print_num(n);
system("pause");
return 0;
}
(3)输出数组中的最大数
//求n个数中的最大值
#include<iostream>
using namespace std;
double getNum(double a[], int n){
double maxNum;
if (n == 1){
return a[0];
}
else{
maxNum = getNum(a, n - 1);
if (maxNum < a[n - 1]){
maxNum = a[n - 1];
}
}
return maxNum;
}
int main(){
int n;
cin >> n;
double a[105];
for (int i = 0; i < n; i++){
cin >> a[i];
}
double res = getNum(a, n);
cout << res << endl;
system("pause");
return 0;
}
(4)计算x的n次幂
#include<iostream>
using namespace std;
const int MOD = 10000007;
long long power(int x, int n){
long long res = 0;
if (n == 0){
return 1;
}
else{
res = power(x, n / 2)*power(x, n / 2)%MOD;
if (n % 2 == 1){
res = res*x%MOD;
}
}
return res%MOD;
}
int main(){
int n, m;
cin >> n >> m;
long long res = power(n, m);
cout << res << endl;
system("pause");
return 0;
}
(5)数组逆置
//将数组逆置
#include<iostream>
using namespace std;
void rev(int a[], int i, int j){//将i,j指针指向首尾
int temp;
if (i < j){
temp = a[i];
a[i] = a[j];
a[j] = temp;
rev(a, i + 1, j - 1);
}
}
int main(){
int n;
cin >> n;
int a[100];
for (int i = 0; i < n; i++){
cin >> a[i];
}
rev(a, 0, n - 1);
for (int i = 0; i < n; i++){
cout << a[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
(6)汉若塔
#include<iostream>
using namespace std;
int m;
void hanoi(int n, char A, char B, char C){
if (n == 1){
m++;
}
else{
hanoi(n - 1, A, C, B);
m++;
hanoi(n - 1, B, A, C);
}
}
int main(){
int n;
cin >> n;
char A, B, C;
m = 0;
hanoi(n, 'A', 'B', 'C');//表示将n个盘子从A借助B移动到C
cout << m << endl;
system("pause");
return 0;
}

浙公网安备 33010602011771号