有三个比较基础的递归题
①编写一递归程序实现任意正整数向八进制数的转换
#include <iostream>
using namespace std;
int zhuan(int n);
int main(void)
{
int n;
cout << "请输入一个十进制数" << endl;
cin >> n;
zhuan(n);
return 0;
}
int zhuan(int n)
{
if (n / 8 >1)
{
zhuan(n / 8);
}
cout << n % 8;
return 0;
}
②编写递归函数,计算勒让德多项式的值
#include <iostream>
using namespace std;
double result_le(double x, int n);
int main()
{
double x;
double n;
cout << "inputx,n" << endl;
cin >> x >> n;
cout << "勒让德多项式的值为" << result_le(x, n) << endl;
}
double result_le(double x, int n)
{
double result;
if (n < 0)
{
cout << "error" << endl;
return -1;
}
if (n == 0)
{
return 1;
}
if (n == 1)
{
return x;
}
else
{
result = ((2 * n - 1) * x - result_le(x, n - 1) - (n - 1) * result_le(x, n - 2)) / n;
return result;
}
}
③用递归函数做,输入一个整数,输出各个位
#include <iostream>
using namespace std;
void print_int(int num);
int main()
{
int num;
cout<<"please input num"<<endl;
cin>>num;
print_int(num);
return 0;
}
void print_int(int num)
{
if(num<0)
{
cout<<"data error!"<<endl;
return;
}
else
{
if(num<10)
{
cout<<num<<endl;
}
else
{
print_int(num/10);
cout<<num%10;//输出和递归调用的顺序调整之后输出由倒序变为正序;语句在递归调用的后面时,按照逆序执行,比如123;
cout<<endl; //123先被存放在站的后面
}
}
}