C语言---初识递归///看了这么久的递归,终于会用了~~

这是上机课老师出的一道题目,题较简单,刚开始使用循环加数组写出来,后来想到这种先得后排的方法可以用递归来做。。。。。 
 

输出整数各位数字

本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。

输入格式:

输入在一行中给出一个长整型范围内的非负整数。

输出格式:

从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格。

输入样例:

123456

输出样例:

1 2 3 4 5 6
#include<stdio.h>
int j[20];
int main(void)
{
	int n,i,k=19;
	scanf("%d",&n);
	if(n>0)
{
	while(n!=0)
	{
		i=n%10;
		n/=10;
		j[k--]=i;
	}
	for(i=k+1;i<20;i++)
	{
		printf("%d ",j[i]);
	}
}
return 0;
}
递归法
#include<stdio.h>
void f(int n)//设n=123 
{
	int i,k;
	if(n==0)
		return;//返回上一级函数的下个语句,
	i=n%10;
	n/=10;
	f(n);
	printf("%d ",i);  
}
int main(void)
{
	int n,i,j;
	scanf("%d",&n);
	f(n);
}

其实吧,递归更多的是当函数调用自己时明白return的作用,并且将接下来的函数怎么走搞清楚,而且当函数块里面的语句运行完后会自动返回上一级。

另外这道题也有很灵性的做法就是把所有数都看称字符输入输出·············


猜你喜欢

转载自blog.csdn.net/printfxgd/article/details/79902130
今日推荐