分类：电脑/网络-程序设计-C/C++
问题：帮忙看下这些题1，intfun(intn){if(n==1)re 
1， int fun(int n)    {if(n==1)return1;    else  return(n+fun(n-1));    }    main() {int x;      scanf("%d",&x); x=fun(x);printf("%d\n",x);   } 给变量输入10，结果为（65）这种内行的题怎么做？主要是里的fun(n-1)怎么理解。2，fun(intx,inty){return(x+y);}  main()  {inta=1,b=2,c=3,sum;  sum=f1， int fun(int n)    {if(n==1)return1;    else  return(n+fun(n-1));    }    main() {int x;      scanf("%d",&x); x=fun(x);printf("%d\n",x);   } 给变量输入10，结果为（65）这种内行的题怎么做？主要是里的fun(n-1)怎么理解。2，fun(intx,inty){return(x+y);}  main()  {inta=1,b=2,c=3,sum;  sum=fun((a++,b++,a+b),c++);  printf("%d\n",sum);  }答案是8 我对答案不理解，我认为a++=2 b++=3,a+b=5,c++=4sum=9为什么答案是8 我哪错了？
回答：第一题是简单的递归 n+fun(n-1)  意思是n=10时 return(10+fun(10-1))   fun(10-1)重新调用fun(int n)函数这时n=9 n+fun(n-1)就=9+fun(8)然后就是 10+fun(9)-->10+9+fun(8)-->10+9+8+fun(7)````最后就是1加到10 =65 也可以是这种的 n*fun(n-1) 就表示n的阶层了第二题我认为是c++的问题 c=3sum=fun((a++,b++,a+b),c++); 其中(a++,b++,a+b) a=1,b=2 而a+b=5 c=3  不奇怪 因为a++的意思是从 a++开始后面的数都+1,而a+b在a++,b++之后所以是5 而c++ 直接被引用这时并没用+1 所以c=3  补充:是哦`1加到10是等55``你是不是提问是打错了成了65? 你的程序我没用过`看到楼下的才发现我口算算错了`- -! C++简单点可以说是先用一下在加1 ++C是先加1,然后在用