函数——递归2(c++)

文章介绍了几个编程问题,涉及输出给定范围内的整数序列,以及解决韩信点兵和小丽找数的问题,要求满足特定条件。使用C++编写函数实现并给出了样例输入和输出。
摘要由CSDN通过智能技术生成
输出1~n之间所有的整数
问题描述
从键盘读入一个整数 n ,请循环输出 1 n 之间所有的整数,每 行输出 1 个。
比如,假设 n =5 ,那么输出结果如下:
1
2
3
4
5
输入
一个整数 n
输出
输出 1 n 之间所有的整数。
样例
输入复制
5
输出复制
1
2
3
4
5
#include <bits/stdc++.h>
using namespace std;
int aaa(int);
int main()
{
	int q;
	cin>>q;
	aaa(q);
	return 0;
}
int aaa(int n)
{
	if(n==1)
	{
		cout<<n<<endl;
		return n;
	}
	int b = aaa(n-1)+1;
	cout<<b<<endl;
	return b;
}

编程求解1+2+3+...+n
问题描述
编程求解下列式子的值: S =1+2+3+ + n
输入
输入一行,只有一个整数 n (1≤ n ≤1000)
输出
输出只有一行(这意味着末尾有一个回车符号),包括 1 个整数。
样例
输入复制
100
输出复制
5050
#include <bits/stdc++.h>
using namespace std;
int aaa(int);
int sum = 0;
int main()
{
	int q;
	cin>>q;
	aaa(q);
	cout<<sum;
	return 0;
}
int aaa(int n)
{
	if(n==1)
	{
		sum = sum+n;
		return n;
	}
	int b = aaa(n-1)+1;
	sum = sum+b;
	return b;
}

韩信点兵
韩信有一对士兵,他想知道有多少人,他就让士兵报数,如果
按照 1 到 5 报数,最末一个士兵报的数为 1 。
按照 1 到 6 报数,最末一个士兵报的数为 5 。
按照 1 到 7 报数,最末一个士兵报的数为 4 。
最后再按 1 到11 报数,最末一个士兵报的数为 10 。
请问韩信这队士兵最少有多少人?
#include <bits/stdc++.h>
using namespace std;
int aaa(int);
int main()
{
	cout<<aaa(1);
	return 0;
}
int aaa(int n)
{
	if(n%5==1&&n%6==5&&n%7==4&&n%11==10)
	{
		return n;
	}
	int b = aaa(n+1);
}

小丽找数
问题描述
小丽同学想在 1 n 中找出这样的数,这个数的各个位的和不能被 2 整除也不能被 5 整除,比
3 12 25 30 1003 12 25 30 100 。这些数都满足各个位的和不能被 2 5 整除。
请你编程找出 1 n 中这些数有多少个?
输入
一个整数 n n ≤9999 )。
输出
1 n 中满足条件的数的个数。
#include <bits/stdc++.h>
using namespace std;
int aaa(int,int);
int main()
{
	int n;
	cin>>n;
	cout<<aaa(1,n);
	return 0;
}
int aaa(int i,int n)
{
	if(i>n)
	{
		return 0;
	}
	int sum = 0;
	int t = i;
	while(t!=0)
	{
		sum = sum+t%10;
		t = t/10;
	}
	if(sum%2!=0&&sum%5!=0)
	{
		return 1+aaa(i+1,n);
	}
	return aaa(i+1,n);
}

字符图形1-星号直角
问题描述
打印字符图形。
输入
一个整数( 0< n <10 )。
输出
一个字符图形。
样例
输入复制
3
输出复制
*
**
***
#include <bits/stdc++.h>
using namespace std;
int aaa(int,int);
int main()
{
	int n;
	cin>>n;
	aaa(1,n);
	return 0;
}
int aaa(int i,int n)
{
	if(i>n)
	{
		return 0;
	}
	for(int j = 1;j<=i;j++)
	{
		cout<<"*"; 
	}
	cout<<endl;
	return aaa(i+1,n);
}

数字直角(1)
问题描述
请打印 n 行的数字直角三角形。
输入
一个整数 n<10。
输出
输出如下方图所示
n 行的数字直角三角形。
输入复制
3
输出复制
1
22
333
#include <bits/stdc++.h>
using namespace std;
int aaa(int,int);
int main()
{
	int n;
	cin>>n;
	aaa(1,n);
	return 0;
}
int aaa(int i,int n)
{
	if(i>n)
	{
		return 0;
	}
	for(int j = 1;j<=i;j++)
	{
		cout<<i; 
	}
	cout<<endl;
	return aaa(i+1,n);
}

请输出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;
int aaa(int,int);
int main()
{
	int n;
	cin>>n;
	aaa(1,n);
	return 0;
}
int aaa(int i,int n)
{
	if(i>n)
	{
		return 0;
	}
	if(i==n)
	{
		cout<<i<<endl;
		return i;
	}
	int b = aaa(i+1,n)-1;
	cout<<b<<endl;
	return b;
}

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值