本文章分为知识点、例子和心得
基础知识:
- 引用:类型名 &引用名=某变量名; (例:int &r=n; r即为n,n即为r)
——某个变量的引用,和这个变量是一回事,相当于该变量的一个别名
- 指针变量:类型标识符 *变量名; (例:int *i_point; )
——其内容为地址(存储位置)的变量,简称指针。它所指向的地址上存放的变量称作目标变量
注意:一个指针变量只能指向同一类型的变量。即整型指针变量只能指向整型数据的地址,而不能放其它类型数据的地址。
例子:
例1:指针初步理解
int i=5;
int *i_point=&i;
cout<<i_point<<endl;//结果1
cout<<*i_point<<endl;//结果2
i=6;
cout<<i_point<<endl;//结果3
cout<<*i_point<<endl;//结果4
运行结果:
此时,i_point中储存的是内存地址,所以运行后结果1为i的内存地址,结果2为i的值,也就是5。
改变i的值,内存地址不变,所以结果3还是i的内存地址不变,但是结果4变更为i最新的值6。
例2:判断素数函数
int prime(int l)
{
int i;
for(i=2;i<=sqrt(l);i++)//注意需要使用cmath
{
if(l%i==0)
{
return 0;
}
}
return 1;
}
例3:最大公约数函数
欧几里德算法:(用递归函数)
#include<iostream>
using namespace std;
int gcd(int m,int n)
{
if (n==0) return m;
else return gcd(n,m%n);
}
int main()
{
int a,b;
cin>>a>>b;
cout<<gcd(a,b);
}
非递归实现:
int zdgys(int n,int m)
{
int c;
while(m!=0)
{
c=n%m;
n=m;
m=c;
}
return n;
}
例4:最小公倍数函数
最小公倍数,就是两数的乘积除以它们两个的最大公约数,就是它们的最小公倍数。
或者:
int zxgbs(int n,int m)
{
for(int i=n;i<=n*m;i++)
{
if(i%n==0&&i%m==0)
{
return i;
}
}
}
心得感悟:
学到函数,程序开始分块了,程序更有条理,对我的要求也更改了,等学到递归就变得迷茫了,有些题只有一点思路,现在还在继续摸索,积累经验。
总之,
递归很难!
递归很难!
递归很难!