1.--------------------------------------
.#include <stdio.h>
void digit(long n,long m)
//n=9734526
m=1000000
{if(m>0)
printf("%2ld",n%10); //条件成立,输出n%10值,n%10=6
if(m>1)
//条件成立
digit(n/10,m/10);
//递归调用函数 n与m值均除以10
printf("%2ld",n%10);
}
2。----------------------------------------
.#include <stdio.h>
void digit(long n,long m)
//n=973452
m=100000
{if(m>0)
printf("%2ld",n%10); //条件成立,输出n%10值,n%10=2
if(m>1)
//条件成立
digit(n/10,m/10);
//递归调用函数 n与m值再除以10
printf("%2ld",n%10);
3。----------------------------
.#include <stdio.h>
void digit(long n,long m)
//n=97345
m=10000
{if(m>0)
printf("%2ld",n%10); //条件成立,输出n%10值,n%10=5
if(m>1)
//条件成立
digit(n/10,m/10);
//递归调用函数 n与m再次除以10
printf("%2ld",n%10);
4。--------------------------------------
.#include <stdio.h>
void digit(long n,long m)
//n=9734
m=1000
{if(m>0)
printf("%2ld",n%10); //条件成立,输出n%10值,n%10=4
if(m>1)
//条件成立
digit(n/10,m/10);
//递归调用函数 n与m再次除以10
printf("%2ld",n%10);
5。------------------------------------
.#include <stdio.h>
void digit(long n,long m)
//n=973
m=100
{if(m>0)
printf("%2ld",n%10); //条件成立,输出n%10值,n%10=3
if(m>1)
//条件成立
digit(n/10,m/10);
//递归调用函数 n与m再次除以10
printf("%2ld",n%10);
6。-----------------------------------------
.#include <stdio.h>
void digit(long n,long m)
//n=97
m=10
{if(m>0)
printf("%2ld",n%10); //条件成立,输出n%10值,n%10=7
if(m>1)
//条件成立
digit(n/10,m/10);
//递归调用函数 n与m再次除以10
printf("%2ld",n%10);
7。-----------------------------------
.#include <stdio.h>
void digit(long n,long m)
//n=9
m=1
{if(m>0)
printf("%2ld",n%10); //条件成立,输出n%10值,n%10=9
if(m>1)
//条件不成立
digit(n/10,m/10);
printf("%2ld",n%10); //输出n%10值 n%10=9
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
现在输出的是6 2 5 4 3 7 9 下面的是关键——其实我的理解也不完全正确,还希望高人来解答。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8。因为是递归算法,就应用到了“栈”,当递归结束时,本着先进后出的栈的规则,要把数据再传回函数的参数,所以,9734526这几个数据被倒退着返回参数,然后并打印出来,所以有了 9 7 3 4 5 2 6 6 2 5 4 3 7 9 这样的结果。
****************************************************
以上只是一家之言,谨作参考。如有不对之处,还望高手更正,谢谢。