C++递归(3)

请输出n~1之间所有的整数

问题描述: 从键盘读入一个整数 n ,请输出 n∼1 之间所有的整数,每行输出 1 个。 比如,假设读入 n=5 ,输出结果如下:

5

4

3

2

1

输入 一个整数 n 。 输出 输出 n∼1 之间所有的数,每行 1 个。 样例

输入复制

5

输出复制

5

4

3

2

1

#include<bits/stdc++.h>
using namespace std;
void func(int);
int main()
{
	int n;
	cin>>n;
	func(n);
	
	
	return 0;
}
void func(int n)
{
	if(n==0)return;
	cout<<n<<endl;
	func(n-1);
}

求100+97+……+4+1的值

问题描述: 求 100+97+⋯+4+1 的值。

输入

输出

一行,即求到的和。

#include<bits/stdc++.h>
using namespace std;
void func(int);
int sum=0;
int main()
{
	func(100);
	cout<<sum;
	
	
	return 0;
}
void func(int n)
{
	if(n<1)return;
	sum=sum+n;
	func(n-3);
}

爱因斯坦的数学题

问题描述: 爱因斯坦出了一道这样的数学题:

有一条长阶梯,

若每步跨 2 阶,则最后剩 1 阶,

若每步跨 3 阶,则最后剩 2 阶,

若每步跨 5 阶,则最后剩 4 阶,

若每步跨 6 阶,则最后剩 5 阶。

只有每次跨 7 阶,最后才正好一阶不剩。

请问这条阶梯最少共有多少阶?

输入

输出

这条阶梯最少的阶数

#include<bits/stdc++.h>
using namespace std;
void func(int);
int main()
{
	func(1);
	
	
	return 0;
}
void func(int n)
{
	if(n%2==1&&n%3==2&&n%5==4&&n%6==5)
	{
		cout<<n;
		return;
	}
	func(n+1);
}

求出100至999范围内的所有水仙花数

问题描述: 所谓水仙花数,就是指各位数字立方之和等于该数的数; 例如:

因为 153=1*1*1 + 5 *5*5 + 3*3*3,所以 153 是一个水仙花数。

输入

输出

若干行,每行一个整数,表示该范围内(100~999)的所有水仙花数。 按从小到大的顺序输出。

#include<bits/stdc++.h>
using namespace std;
void func(int);
int cnt=0;
int main()
{
	func(100);
	cout<<cnt;
	
	
	return 0;
}
void func(int n)
{
	if(n>999)return;
	int a=n%10;
	int b=n/10%10;
	int c=n/100;
	if(a*a*a+b*b*b+c*c*c==n)cnt++;
	func(n+1);
}

数 字 直 角 ( 2 )

问 题 描 述: 请 打 印 n 行 的 数 字 直 角 三 角 形 。 输 入 一 个 整 数 n < 1 0 。 输 出 输 出 如 下 方 图 所 示 n 行 的 数 字 直 角 三 角 形 。

输 入 复 制

3

输 出 复 制

1

1 2

1 2 3

#include<bits/stdc++.h>
using namespace std;
void func(int,int);
int main()
{
	int n;
	cin>>n;
	func(1,n);
	
	
	return 0;
}
void func(int i,int n)
{
	if(i>n)return;
	int k=1;
	for(int j=0;j<i;j++)
	{
		cout<<k;
		k++;
	}
	cout<<endl;
	func(i+1,n);
}

求整数位数

题目描述: 求任意正整数的位数。比如16是两位数,3696是四位数等 输入:一个整数 输出:这个整数的位数

输入案例:

54188

输出案例:

5

#include<bits/stdc++.h>
using namespace std;
void func(int);
int cnt=0;
int main()
{
	int n;
	cin>>n;
	func(n);
	cout<<cnt;
	
	
	return 0;
}
void func(int n)
{
	if(n==0)return;
	cnt++;
	n=n/10;
	func(n);
}

小球反弹高度

题目描述: 一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下求它在第10次落地时, 反弹多高? 共经过多少米 ? (保留8位小数)

输入:

输出:

经过10次反弹后的高度

#include<bits/stdc++.h>
using namespace std;
void func(double);
int cnt=0;
double t;
int main()
{
	func(100);
	cout<<fixed<<setprecision(8)<<t;
	
	
	return 0;
}
void func(double n)
{
	if(cnt==10)return;
	cnt++;
	n=n*0.5;
	t=n;
	func(n);
}

分离正整数

题目描述: 在程序中定义一函数digit(n,k), 它能分离出整数n从右边数第k个数字例如n=31859,k=3, 则函数输出8 输入:两个整数n和k,其中n表示整数,k表示从右边第k位 输出:第k位的值

输入案例

1254876 2

输出案例

7

#include<bits/stdc++.h>
using namespace std;
int func(int,int);
int cnt=0;
int main()
{
	int n,m;
	cin>>n>>m;
	cout<<func(n,m);
	
	
	return 0;
}
int func(int n,int m)
{
	if(cnt==m-1)
	{
		int a=n%10;
		return a;
	}
	cnt++;
	func(n/10,m);
}

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值