void f(int n) {if (n==0)return; f(n-1); printf("%d",n);} void main(){ f(5);printf("\n");}

void f(int n)
{if (n==0)return;
f(n-1);
printf("%d",n);}
void main()
{ f(5);printf("\n");}
结果为什么是12345?

开始f(5)传值给了n n等于5 第一次if不成立 执行f(n-1)>>f(4) ,第二次if不成立 执行f(n-1)现在n等于4>>f(3) 到了最后就是if成立return 就是从f(1)开始向上推一到f(5) 因为递归函数 有两个步骤
递推>>回归 ,递推从未知到以知,回归从以知把未知值求出
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-07
递归调用。
f(5)->f(4)->f(3)->f(2)->f(1)->f(0)
n的值:5 -> 4 -> 3 -> 2 -> 1 -> 0
而代码执行,当递归执行结束返回时(结束条件为n==0)才执行printf("%d",n);,所以结果就是反过来。12345。
void f(int n)
{
if (n==0)
return;
f(n-1);
printf("%d",n);
}本回答被提问者采纳
第2个回答  2012-05-07
因为你里面又调用了f(int n)方法
他是传进去的是5
void f(int n) (1)
{if (n==0)return; (2)
f(n-1); (3)
printf("%d",n);} (4)
void main()
{ f(5);printf("\n");}

走的路线是
5(1)-》5(2)-》5(3)-》4(1)-》4(2)-》4(3)-》3(1)-》3(2)-》3(3)-》2(1)-》2(2)-》2(3)-》1(1)-》1(2)-》1(3)-》0(1)-》0(2)-》1(4)这时输出1-》2(4)输出2-》3(4)输出3-》4(4)输出4-》5(4)输出5 最后返回main方法
不知道这么写你能不能看懂 ()前的1,2,3,4,5 ,n的值(1),(2),(3),(4)指的是对应的语句

void f(int n) {if (n==0)return; f(n-1); printf("%d",n);} void...
传值给了n n等于5 第一次if不成立 执行f(n-1)>>f(4) ,第二次if不成立 执行f(n-1)现在n等于4>>f(3) 到了最后就是if成立return 就是从f(1)开始向上推一到f(5) 因为递归函数 有两个步骤 递推>>回归 ,递推从未知到以知,回归从以知把未知值求出 ...

...int n) { if(n) fun(n-1); printf(“%d”,n); } main() {?_百度...
先递归,再打印,当n为0的时候结束打印,但0还是会执行后续的输出 于是是从0打印到5 选c

...f(int n){if(n==1)return 1;else return f(n-1)+1;} main() {int...
f(1)=1 f(2)=f(1)+1=2 i=1 j+=f(1)=1 j=1 i=2 j+=f(1)+1=2 j=3 循环结束。

int f(int n) { if( n == 1 || n == 2) return 1; else return f(n...
f(20)= f(19) - f(18)= f(18)-f(17) - [f(17) - f(16)]= f(18) - 2f(17) + f(16)……中间省略78个字……(反正就是往下展开)还有你写错了额 f(20)是f(19)-f(18),不是f(19)-f(20)

int fun(int n) {if(n==1)return 1; else return(n+fun(n-1)); }...
第九次进入:x==2,因为x!=1,执行else return(n+fun(n-1)); 语句,返回10+9+8+7+6+5+4+3+2+fun(2-1)即10+9+8+7+6+5+4+3+2+fun(1)第十次进入:x==1,因为x==1,执行return 1; 语句,返回10+9+8+7+6+5+4+3+2+1。事实上是求1+...+10的和。结果应该是55....

...int fun(int*x, int n) { if (n==0) return x[0]; else return x[0...
include <stdio.h> int fun(int*x, int n){ if (n==0)return x[0];else return x[0]+fun(x+1, n-1);} 如果n = 0, 那么返回 数组 x的第一个元素,如果 n !=0 那么后面将会是一个递归算法。请把代码贴完,还有你想说明的是什么?想问什么?

#include <stdio.h> int fun(int n) { if(n==1)
include <stdio.h>int fun(int n){if(n==1) return 1;else return(n+fun(n-1));}main(){ int x;scanf(“%d”,&x);x=fun(x);printf(“%d\\n”,x);return 0;}我运行的结果是55

int fun(static int n) {if(n==1)return 1; else return(n+fun(n...
这是递归的例子:x=fun(x)+fun(x);先执行第一个fun(x),假如我们输入的是4(输入10可能步骤很多);先递归:fun(4)=4+fun(3)fun(3)=3+fun(2)fun(2)=2+fun(1)fun(1)=1 在返回:fun(2)=2+1;fun(3)=3+2+1 fun(4)=4+3+2+1=10 第二个fun(x)也是如此!!测试:4 20 ...

int f(int x){if(x==0) return 1;z+x*f(x-1);printf("%d",z);return...
(2)所以z=1*f(0)=1,所以print输出z值1,return返回z值1;同理,z=2*f(1)=2,print输出z值2,return返回z值2;z=3*f(2)=6,print输出z值6,return返回z值6(PS:这个return返回到main函数调用的位置,故,最后还会在main函数里print多一个6,而前面的三个return返回到的递归函数调用...

#include<stdio.h> void main() { char a='本金',b='年数',c='年利率...
if(n= =0) return(m);do{ r=m%n;if (r!=0)} while (___);return(n);}A)r!=0B)r==0C)n!=0D)n==018.现已定义整型变量int i=1; 执行循环语句“while(i++5);”后,i的值为( )。A)1B)5C)6D)以上三个答案均不正确19.以下程序的输出结果是( )。main(){int a=0,j;for(j=...

相似回答