C++基础习题(递归程序)

有三个比较基础的递归题
①编写一递归程序实现任意正整数向八进制数的转换

#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先被存放在站的后面
		}
	}
}
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页