C++基礎習題(遞迴程式)
阿新 • • 發佈:2021-01-23
有三個比較基礎的遞迴題
①編寫一遞迴程式實現任意正整數向八進位制數的轉換
#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先被存放在站的後面
}
}
}