C C++基础知识——函数_int fact(int n)
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。给定一个 n×m的方格阵,沿着方格的边线走,从左
1. n的阶乘
输入一个整数 n,请你编写一个函数,int fact(int n)
,计算并输出 nn 的阶乘。
输入格式
共一行,包含一个整数 n。
输出格式
共一行,包含一个整数表示 n 的阶乘的值。
数据范围
1≤n≤10
输入样例:
3
输出样例:
6
#include<iostream>
using namespace std;
int fact(int n)
{
if(n<=1) return n;//边界点
n=n*fact(n-1); //不断递归
}
int main()
{
int n;
cin>>n;
cout<<fact(n)<<endl;
return 0;
}
2.最大公约数
输入两个整数 a和 b,请你编写一个函数,int gcd(int a, int b)
, 计算并输出 a 和 b 的最大公约数。
输入格式
共一行,包含两个整数 a和 b。
输出格式
共一行,包含一个整数,表示 a 和 b 的最大公约数。
数据范围
1≤a,b≤1000
输入样例:
12 16
输出样例:
4
#include<iostream>
using namespace std;
int gcd(int a, int b)
{
for(int i=1000;i>0;i--)
if(a%i==0&&b%i==0)return i;
}
int main()
{
int x,y;
cin>>x>>y;
cout<<gcd(x,y)<<endl;
return 0;
}
输入两个整数 a 和 b,请你编写一个函数,int lcm(int a, int b)
,计算并输出 aa 和 bb 的最小公倍数。
输入格式
共一行,包含两个整数 a 和 b。
输出格式
共一行,包含一个整数,表示 a 和 b的最小公倍数。
数据范围
1≤a,b≤1000
输入样例:
6 8
输出样例:
24
#include<iostream>
using namespace std;
int lcm(int a,int b)
{
for(int i=1;i<a*b;i++)
if(i%a==0&&i%b==0)
return i;
}
int main()
{
int a,b;
cin>>a>>b;
cout<<lcm(a,b);
return 0;
}
3.递归求斐波那契数列
请使用递归的方式求斐波那契数列的第 n项,下标从1开始。
斐波那契数列:1,1,2,3,5…,这个数列从第 3 项开始,每一项都等于前两项之和
输入格式
共一行,包含整数 n。
输出格式
共一行,包含一个整数,表示斐波那契数列的第 n 项。
数据范围
1≤n≤30
输入样例:
4
输出样例:
3
#include<iostream>
using namespace std;
int f(int n)
{
if(n<=2) return 1;//边界点
else
return f(n-1)+f(n-2);
}
int main()
{
int n;
cin>>n;
cout<<f(n);
return 0;
}
4.数组翻转
给定一个长度为 n 的数组 aa 和一个整数 size,请你编写一个函数,void reverse(int a[], int size)
,实现将数组 a 中的前 size 个数翻转。
输出翻转后的数组 a。
输入格式
第一行包含两个整数 n和 size。
第二行包含n 个整数,表示数组 a。
输出格式
共一行,包含 n 个整数,表示翻转后的数组 a。
数据范围
1≤size≤n≤1000
1≤a[i]≤1000
输入样例:
5 3
1 2 3 4 5
输出样例:
3 2 1 4 5
#include<iostream>
using namespace std;
void reverse(int a[1010],int size)
{
for(int i=0,j=size-1;i<j;i++,j--)
{
swap(a[i],a[j]);
}
}
int main()
{
int n,size;
int a[1010];
cin>>n>>size;
for(int i=0;i<n;i++)
cin>>a[i];
reverse(a,size);
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
return 0;
}
5.数组去重
给定一个长度为 n 的数组 a,请你编写一个函数:
int get_unique_count(int a[], int n); // 返回数组前n个数中的不同数的个数
输入格式
第一行包含一个整数 n。
第二行包含 n 个整数,表示数组 a。
输出格式
共一行,包含一个整数表示数组中不同数的个数。
数据范围
1≤n≤1000,
1≤ai≤1000。
输入样例:
5
1 1 2 4 5
输出样例:
4
#include<iostream>
using namespace std;
int sum=0;
int b[1010];
int get_unique_count(int a[1010], int n)
{
for(int i=0;i<n;i++)
{
if(b[a[i]]==0)sum++,b[a[i]]=1;
}
return sum;
}
int main()
{
int n;
int a[1010];
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
cout<<get_unique_count(a,n);
return 0;
}
6.跳台阶
一个楼梯共有 n 级台阶,每次可以走一级或者两级,问从第 0 级台阶走到第 n 级台阶一共有多少种方案。
输入格式
共一行,包含一个整数 n。
输出格式
共一行,包含一个整数,表示方案数。
数据范围
1≤n≤15
输入样例:
5
输出样例:
8
#include<iostream>
using namespace std;
int n;
int sum=0;
int k(int x)
{
if(x>n)return 0;//边界点
if(x==n)sum++;//满足条件相加
k(x+1),k(x+2);
}
int main()
{
cin>>n;
k(0);
cout<<sum<<endl;
return 0;
}
7.二维走方格
给定一个 n×m的方格阵,沿着方格的边线走,从左上角 (0,0) 开始,每次只能往右或者往下走一个单位距离,问走到右下角 (n,m) 一共有多少种不同的走法。
输入格式
共一行,包含两个整数 n 和 m。
输出格式
共一行,包含一个整数,表示走法数量。
数据范围
1≤n,m≤10
输入样例:
2 3
输出样例:
10
#include<iostream>
using namespace std;
int n=0,m=0;//定义边界n和m
int sum=0;
void k(int x,int y)//递归遍历
{
//如果同时抵达边界,则满足条件
if(x==n&&y==m)
{
sum++;
}
else if(x<=n&&y<=m)//判断在边界内选择
{
k(x+1,y);//向下边界移动1,右边界不动
k(x,y+1);//向右边界移动1,下边界不动
}
}
int main()
{
cin>>n>>m;
k(0,0);//从(0,0)位置开始遍历到(n,m)
cout<<sum;
return 0;
}
(1)Python所有方向的学习路线(新版)
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。
(2)Python学习视频
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)