1.用递归的方法求1+2+3+....+N的值
【参考程序】
#include <bits/stdc++.h>
using namespace std;
int nm(int n);
int x;
int main(){
cin>>x;
cout<<nm(x);
return 0;
}
int nm(int n)//计算1+2+...+n的值
{
if(n==0) return 0;//判断是否到达递归边界
else return n+nm(n-1); //否则继续递归
}
2.用递归函数输出斐波那契数列第N项。0,1,1,2,3,5,8,13……
【参考程序】
#include <bits/stdc++.h>
using namespace std;
int nm(int n);
int x;
int main(){
cin>>x;
cout<<nm(x);
return 0;
}
int nm(int n)//输出斐波那契数列第N项
{
if(n==1) return 0;//判断是否达到递归边界:n=1
else if(n==2) return 1;//判断是否到达递归边界:n=2
else return nm(n-1)+nm(n-2); //否则继续递归
}
3.输入一个非负整数,输出这个数的倒序数。例如输入123,输出321.
【参考程序】
#include <cstdio>
using namespace std;
void print(int x)//输出x的倒序数
{
printf("%d",x%10);//输出x的最后一位
if(x>=10) print(x/10);//判断是否到达递归边界x<10,否则继续递归
}
int main(){
int n;
scanf("%d",&n);
printf("\n");
return 0;
}
4.用递归算法将一个十进制数X转换成任意进制数M(M<=16)
【参考程序】
#include <cmath>
#include <iostream>
#include <cstdio>
using namespace std;
char d[16]={'0','1','2','3','4','5','6','7','8','9','A',''B,'C','D','E','F'};
int x,m;
int t(int n,int k);
int main(){
cin>>x>>m;
t(x,m);
cout<<endl;
return 0;
}
int t(int n,int k)//将十进制n转换为k进制数
{
int r;
r=n%k;n=n/k;//进制转换
if(n!=0) t(n,k);//判断是都到达递归边界:n=0,否则继续递归
cout<<d[r];
}