6:函数(递归)-3
描述 |
---|
m块饼分p天吃完,每天吃1块或者2块。问有多少种不同的吃法。 |
输入 |
一个正整数n,表示n组案例。 每组案例由两个正整数m和p构成。(m<=20,p<=20) |
输出 |
针对每组案例,输出共有多少种吃完的方法。 每组案例输出完都要换行。 |
样例输入复制样例 |
1 10 7 |
样例输出 |
35 |
#include<iostream>
using namespace std;
int sum = 0;//放在外面,否则每回递归会使sum为0;
//sum作用范围,一个是fun函数里,一个是在主函数里。
//int sum=0;只会作用一次,所以下次想要计数,必须让sum=0,但是fun函数里面无法实现
//只好在主函数里让sum=0(不能int sum=0,这样写相当于重新定义了一个左值,与开头的为两个定义范围)
int fun(int m, int p)
{
if (m == 0 && p == 0) sum++;
else
{
if (m - 1 >= 0 && p - 1 >= 0) fun(m - 1, p - 1);
if (m - 2 >= 0 && p - 1 >= 0) fun(m - 2, p - 1);
}
return sum;
}
int main()
{
int n;
cin >> n;
while (n--)
{
int m, p;
cin >> m >> p;
cout << fun(m, p) << endl;
sum = 0;
}
return 0;
}
7:函数(递归)-4
描述 |
---|
编写递归函数将输入的整数逐个数字输出。如输入12345,输出1 2 3 4 5,每个数字之间用空格隔开。 |
输入 |
一个正整数n,表示n组案例。 每组案例由一个正整数m构成。 |
输出 |
针对每组案例,将输入的整数逐个数字输出,每个数字之间用空格隔开,最后一位数字后面没有空格。 每组案例输出完都要换行。 |
样例输入复制样例 |
1 12345 |
样例输出 |
1 2 3 4 5 |
#include<iostream>
using namespace std;
void f(int n)
{
int a;
if (n < 9) cout << n;
else
{
a = n % 10;
n = n / 10;
if (n > 9) f(n);
else cout << n ;
cout <<" "<< a;
}
}
int main()
{
int n;
cin >> n;
while (n--)
{
int a;
cin >> a;
f(a);
cout << endl;
}
return 0;
}
8:函数(递归)-5
描述 |
---|
编写递归函数将输入的整数逐个数字反序输出。如输入12345,输出5 4 3 2 1,每个数字之间用空格隔开。 |
输入 |
输出 |
针对每组案例,将输入的整数逐个数字反序输出,每个数字之间用空格隔开,最后一位数字后面没有空格。 每组案例输出完都要换行。 |
样例输入复制样例 |
1 12345 |
样例输出 |
5 4 3 2 1 |
#include<iostream>
using namespace std;
void f(int n)
{
int a,b=n;
while (n!=0)
{
a = n % 10;
if (b != n) cout << " ";
n = n / 10;
cout << a;
}
}
int main()
{
int n;
cin >> n;
while (n--)
{
int a;
cin >> a;
f(a);
cout << endl;
}
return 0;
}
9:函数(递归)-6
描述 |
---|
编写递归函数将输入的整数逐个数字输出,每个数字之间用空格隔开,并且数字为几就应该有几个空格。 例如输入12345,则输出1 2 3 4 5 ,其中1后面有1个空格,2后面有2个空格,…,5后面有5个空格。 |
输入 |
一个正整数n,表示n组案例。 每组案例由一个正整数m构成。 |
输出 |
针对每组案例,将输入的整数逐个数字输出,每个数字之间用空格隔开,并且数字为几就应该有几个空格。 每组案例输出完都要换行。 |
样例输入复制样例 |
1 12345 |
样例输出 |
1 2 3 4 5 |
#include<iostream>
using namespace std;
void f(int n)
{
int a;
if (n < 9) cout << n;
else
{
a = n % 10;
n = n / 10;
if (n > 9) f(n);
else
{
cout << n;
for (int i = 0; i < n; i++)
{
cout << " ";
}
}
cout << a;
for (int i = 0; i < a; i++)
{
cout << " ";
}
}
}
int main()
{
int n;
cin >> n;
while (n--)
{
int a;
cin >> a;
f(a);
cout << endl;
}
return 0;
}