递归
两个要点:结束条件 + 公式
栗1:递归求阶乘,先找公式 f ( n ) = n ∗ f ( n − 1 ) f(n)=n*f(n-1) f(n)=n∗f(n−1) ,确定递归结束条件 n=1,return 1。
int fun(int n){
if(1==n){ //结束条件 ps:比较相等时,数字在左,变量在右
return 1;
} else{
return n*fun(n-1);//公式
}
}
int main(){
int n=3;
printf("f(%d)=%d",n,fun(n));
return 0;
}
栗2:上台阶有多少种走法,公式 s t e p ( n ) = s t e p ( n − 1 ) + s t e p ( n − 2 ) step(n)=step(n-1)+step(n-2) step(n)=step(n−1)+step(n−2) ,
int step(int n){
if(1==n || 2==n){ //结束条件
return n;//到第一层台阶有一种走法;第二层台阶有2种走法
} else{
return step(n-1)+step(n-2);//公式
}
}
int main(){
int n;
scanf("%d",&n);
printf("step(%d)=%d",n,step(n));
return 0;
}