int fun(int n) {if(n==1)return 1; else return(n+fun(n-1)); } main() { int x; scanf("%d",x); x=fun(x

不好意思
fun(x);printf("%d\n",x);}
执行程序 ,给变量输入10,程序运行后的输出结果,求输出结果

第一次进入:x==10,因为x!=1,执行else return(n+fun(n-1)); 语句,返回10+fun(10-1)即10+fun(9)
第二次进入:x==9,因为x!=1,执行else return(n+fun(n-1)); 语句,返回10+9+fun(9-1)即10+9+fun(8)
.....
....

第九次进入: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.
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-08-23
大哥,问问题的时候也负责点好不,要不指望谁给你认真回答。

你到底想问啥?
第2个回答  2016-01-09
正确答案:A
本题主要考查函数的递归调用。在做递归调用函数类型的题目时,我们首先要找到函数的出口和递归结束的条件。
在本题中,程序首先定义了一个fun函数,函数的形参是一个整型变量n,从后面的程序可以看出,该函数是一个递归函数。在函数体中,首先执行条件判断语句,如果条件结果为真,说明变量n为1,此时返回1,这是递归函数的出口;否则返回函数的递归调用。
在主函数中,定义一个变量x,并试图通过键盘输入的方式为变量x赋初值,然后调用fun函数,并用x作为其形参,用x保存最后的运行结果输出。
变量x的初值为10,从上面的分析我们知道,递归调用的出口是n=1,而每递归一次n的值减1,因此,函数fun递归调用了9次,其运算相当于10+9+8+7+6+5+4+3+2+1=55。因此,程序最终的输出结果是55。
第3个回答  2010-08-24
10
第4个回答  2010-08-22
简单的递归函数啊,有什么看不明白的呢。

...{if(n==1)return 1; else return(n+fun(n-1)); } main() { int x...
第一次进入:x==10,因为x!=1,执行else return(n+fun(n-1)); 语句,返回10+fun(10-1)即10+fun(9)第二次进入:x==9,因为x!=1,执行else return(n+fun(n-1)); 语句,返回10+9+fun(9-1)即10+9+fun(8)...第九次进入:x==2,因为x!=1,执行else return(n+fun(n-...

#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

c语言编程题,求e的近似值,e=1\/1!+1\/2!+1\/3!+...+1\/n!,累加项小于1_百度...
正确的公式为:e=1+1\/1!+1\/2!+1\/3!+...+1\/n!代码实现如下:include<stdio.h> int fun(int n){ if(n == 1)return 1;return n*fun(n-1);} int main(){ double sum =1.0 ;int i = 1;while((1.0\/fun(i))>=1e-8){ sum +=(1.0\/fun(i));i++;} printf("%.8...

...{if(n==1)return 1; else return(n+fun(n-1)); } main() {int x...
这是递归的例子: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 ...

请给我一段C++计算阶乘的代码!
include <iostream> using namespace std;int fun(int n){ if(n<=1) return 1;else return n*fun(n-1);} int main(){ int n;cout<<"请输入一个数:\\n";cin>>n;cout<<n<<"!="<<fun(n)<<endl;return 0;}

用C语言求1到N的阶层 的累加和
思路:先定义一个函数用来计算一个数的阶乘,在从1到N循环依次就其累加和,最后输出累加和即可。参考代码:例如求1到3的阶乘累加和。include "stdio.h" int fun(int n){if(n==1) return 1;else return n*fun(n-1);} #include "math.h"int main() {int n,sum=0,i;scanf("%d",&n)...

c语言1+2+3+...+n,用函数写,不直接写怎么写.
int fun(int n){ if(n==1)return 1; else return n+fun(n-1);}int main(){ int val=0; printf("Please enter a nmuber ,the computer will output 1 + 2 + 3 +... the value of + n\\n"); scanf("%d", &val); printf("1+2+3+4+...+n = %d\\n", fun(val)...

c++ n个数求和
if(n==1)return 1;else return Fun(n-1)+n;} 2、对程序员的编写稍微繁琐,但运行效率稍高于第一种:int Fun(int n){ int r=0,i;for(i=1;i<=n;i++)r+=i;return r;} 3、对程序员来讲是最复杂的,需要自己进行推理计算得到公式,但运行效率是最高的:int Fun(int n){ return ...

c语言求1到n阶乘的和用递归
1、打开vc6.0,新建一个vc项目,添加头文件,添加一个空的main函数,这里先定义一个用来求阶乘的函数,函数的参数为i,阶乘就是不断的和前面的一个数相乘,这里就是不断和fact函数相乘,之后编写主函数的内容:2、在main函数定义int类型变量sum,然后调用fact()将返回值赋予sum,最后使用printf打印sum...

在C语言中用递归调用的方法求n!
{ if(n < 2)return 1;else return n*Func(n-1);} int main(){ int n = 5;printf("n! = %d\\n",Func(n));return 0;} 执行过程:-》Func(5)-》5*Func(4)-》5*(4*Func(3))-》5*(4*(3*Func(2)))-》5*(4*(3*(2*Func(1)))当n为0的时候停止递归,返回结果 ...

相似回答