我如何在递归开始返回的时候执行新的语句比如调用一个函数?
说的明白点就是比如我有如下递归函数:recursion(int n){
if(n==0) return 0;
else{
printf("%d",n);
return recursion(n-1);
}
}recursion(5);现在返回的结果应该是
54521那现在我想在递归中返回12345,应该怎么写?(当然你不能改变递归调用的顺序)

解决方案 »

  1.   

    recursion(int n){
    if(n==0) {
    printf("%d",n+1);
    return 0;
    }
    else
    return recursion(n-1);
    }>>当然你不能改变递归调用的顺序)
    只能这么改,如果不能改变语句顺序的话,就是神仙也做不到啊。
      

  2.   

    int recursion(int n)
    {
    if(n==0) return 0;
    else
    {

    recursion(n-1);
    printf("%d",n);
    return 1;
    }
    }
      

  3.   

    定义一个全局变量。
    int g_iCount = 0;语句printf("%d", g_iCount++);
      

  4.   

    recursion(int n){
    if(n==0) return 0;
    else{
    printf("%d",6-n);
    return recursion(n-1);
    }
    }recursion(5);
      

  5.   

    recursion(int n){
    if(n==0) return 0;
    else{
    printf("%d",6-n);
    return recursion(n-1);
    }
    }recursion(5);
      

  6.   

    recursion(int n){
    if(n==0) {
    printf("%d",n+1);
    return 0;
    }
    else
    return recursion(n-1);
    }#include "stdlib.h"
    void main(void)
    {
     recursion(5);
    }
      

  7.   

    int recursion(int n) {
    int result;
    if(n<1) return 0;
    if(n==1) {
    printf("%d",n);
    return 1;
    }
    else {
    result = recursion(n-1);
    printf("%d",n);
                      return result;
    }
    }
      

  8.   

    int test(int n)
    {
    if(n==0)return 0;
    else return test(n-1)+print(n);
    }int print(int n)
    {
    printf("%d",n);
    return 1;
    }
      

  9.   

    recursion(int n){
    recursion(n-1);
    if(n==0) return 0;
    else{
    printf("%d",n);}
    }recursion(5);
      

  10.   

    只要把else语句里的改为先调用再printf就可以了
      

  11.   

    recursion(int n){
    if(n==6) return 6;
    else{
    printf("%d",n);
    return recursion(n+1);
    }
    }recursion(1);
      

  12.   

    recursion(int n){
    if(n==0) return 0;
    else{
    printf("%d",n);
    return recursion(n-1);
    }
    }
    int l=5;
    int k=l+1;
    recursion(l);
      

  13.   

    recursion(int n)
    {
    if (n==0)

       return 0;
       printf("%d",n+1);
    else 
       if ((recursion(n-1)))
    printf("%d",n);
    return 1;
    }
      

  14.   

    要这么复杂吗?recursion(int n){
    if(n==0) return 0;
    else{return recursion(n-1);
    printf("%d",n);}
    }recursion(5);
      

  15.   

    不好意思,上面的程序掉了一个左大括号
    recursion(int n)
    {
    if (n==0)

       return 0;
       printf("%d",n+1); //特殊处理
    }
    else 
       if ((recursion(n-1)))
    printf("%d",n);
    return 1;
    }
      

  16.   

    recursion(int n)
    {
    if(n==0) 
       return 0;
    else
    {
      return recursion(6-n);
      printf("%d",n);
    }
    }
      

  17.   

    recursion(int n)
    {
    if(n==0) 
       return 0;
    else
    {
      return recursion(6-n);
      printf("%d",n);
    }
    }