这一章讲的指针和递归,关于指针和调用栈还需要多学习。
例题4-2 求素数
任务
例题4-1 组合数问题
这道题主要有个溢出问题,在纸上写出组合数公式,会发现可以直接约去许多项,下面给出代码。
int c(int m, int n){
if(n == 0 || m == n)
return 1;
if(n == 1)
return m;
int t = 1;
for(int i = m; i > n; i--){
t *= i;
}
int d = 1;
for(int i = (m - n); i > 0; i--){
d *= i;
}
return t/d;
}
例题4-2 求素数
主要想记录一下四舍五入。
bool isPrime(int n ){
if(n == 1)
return false;
int m = floor(sqrt((double)n) + 0.5);
for(int i = 0; i < m; i++){
if(m % i == 0)
return false;
}
return true;
}
任务
这里使用了static变量,但感觉这道题意义不在此,因为此章并没有介绍stataic变量,是要在调用栈帧的地址上入手么?
int f(){
static int i = 1;
return i++;
}