当前位置: 代码迷 >> C语言 >> 请教一道递归调用函数的问题!
  详细解决方案

请教一道递归调用函数的问题!

热度:150   发布时间:2008-05-19 18:57:10.0
请教一道递归调用函数的问题!
请问这道题中的加出加粗部分是什么意思,我看不懂它在说些什么,请高手指教一下。
观察“运动的”递归过程是非常有趣的。修改阶乘函数,[bo]以显示它的局部变量和递归调用参数。对于每次递归调用,在一个独立的行中显示输出结果,并添加1个级别的缩进。[/bo]尽最大的努力使输出 结果清楚、有趣和有意义。
什么是在一个独立的行中显示输出结果,还有什么是1个级别的缩进?
# include <stdio.h>
long factorial(long number);
  int main(){
      int i;
   for (i=0;i<=10;i++){
    printf( "%2d!=%ld\n",i,factorial(i));
    }
  return 0;
   }
long factorial(long number)
{
    if (number<=1){
    return 1;
    }
   else {
    return (number*factorial(number-1));
    }
   
}

[[it] 本帖最后由 cnlkf 于 2008-5-19 18:59 编辑 [/it]]
搜索更多相关的解决方案: 递归  函数  

----------------解决方案--------------------------------------------------------
12

----------------解决方案--------------------------------------------------------
LS可以把你的程序让我看一下吗?还是有一些看不懂。
----------------解决方案--------------------------------------------------------
呵呵
#include<stdio.h>
long factorial1(long number1);
long factorial2(long number2);
int main()
{
    int i;
    for (i=0;i<=10;i++){
        printf("%2d!=%ld\n",i,factorial2(i));
        factorial1(i);
        printf("1\n");
    }
    return 0;
}
long factorial1(long number1)
{
    static int j=0;
    int k;
    long a;
    if (number1<=1){
        return 1;
    }
    else{
        printf("%2d*%2d!  <------------  %d!=%ld\n",number1,number1-1,number1-1,factorial2(number1-1));
        k=j++;
        for (k=0;k<j;k++){
            printf("   ");
        }
    factorial1(number1-1);
    j=0;
    }
}
long factorial2(long number2)
{
    if(number2<=1){
        return 1;
    }
    else{
        return (number2 * factorial2(number2-1));
    }
}

[[it] 本帖最后由 liaojuncong 于 2008-5-20 22:50 编辑 [/it]]
----------------解决方案--------------------------------------------------------
????
----------------解决方案--------------------------------------------------------
????
----------------解决方案--------------------------------------------------------
楼上此话咋理解?
学到递归调用就不能。。。。。
----------------解决方案--------------------------------------------------------
[quote][bo]以下是引用 [un]liaojuncong[/un] 在 2008-5-19 23:20 的发言

不是同班的那,这道题是朋友问我的,有一些地方看不懂,现在还在研究中,你定义的两个函数的标示符会不会有点太长了,C语言中虽然能支持255位,但一般都是只认前8位,超过了基本都当成同一个标示符处理的。。
----------------解决方案--------------------------------------------------------
有谁可以解释一下
什么是在一个独立的行中显示输出结果,还有什么是1个级别的缩进?
----------------解决方案--------------------------------------------------------
回复 8# 的帖子
长?现在的编译器都至少支持32位了呢,这算是短的。
BCCN堕落了,广告都出现了……版主都在干什么……
----------------解决方案--------------------------------------------------------
  相关解决方案