问题1:设计一个函数,例如将1234倒序输出 4321
分析:
1,首先确定n的位数p,结束条件是p==1,的时候结束
2,循环是每次确定最高位的数,从而n-最高位的数,进行递归,每次递归的数都是去掉最高位的数,然后输出最高位的数
具体代码:
int f(int n){ //获得位数
int count=0;
while(1){
if(n==0){
break;
}
n=n/10;
count++;
}
return count;
}
int f1(int p){
//获的10的p次方,并返回
int i,sum=1;
for(i=0;i<p;i++){
sum*=10;
}
return sum;
}
void f_print(int n){
//确定n的位数
int m;//存储最高位
int p=f(n); //存储位数
if(p==1){
printf("%d",n);
return;
}else{
//获得最高位
m=n/f1(--p);
n=n-m*f1(p);
f_print(n);
printf("%d",m);
}
}
main(){
f_print(1234);
}
结果截图:
问题2:编写一个程序,采用递归的方式,倒序输出一个以.结尾的字符串
分析:
1,结束条件,ch==‘.’
2,循环条件,每次指针加1
代码:
void f(char *str ,int n){
char ch=*(str+n);
if(ch=='.'){
return;
}else{
f(str,n+1);
printf("%c",ch);
}
}
main(){
char ch[80]="djfkdafj 23j34ijkjfaioejkk 45jk.djklfajadkf ";
f(ch,0);
}
结果: