我有一题C++的问题解决不了。需要详细的分析解答。希望专业人士帮帮忙~~小弟在此谢过~~X=10
intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf("%d",&x);x=fun...
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);
} 展开
{
if(n==1)return 1;
else return(n+fun(n-1));
}
main()
{
int x;
scanf("%d",&x);
x=fun(x);
printf("%d\n",x);
} 展开
4个回答
展开全部
额,这是典型的递归算法,更详细的汉罗塔问题里面有讲
其他的都是浮云,关键是x=fun(x)
楼主说x初始值为10,那我们看,fun(10)等于多少
把10带入fun里面,走一下,返回值是return( 10 + fun( 9 ) )
因此。我们计算fun( 9 ),再次带入fun( 9 )返回值是9 + fun( 8 )
不断带入,每一次fun()里面的参数都减一,直到变为fun( 1 ),
由于if(n==1)return 1,因此fun( 1 )返回的是1,停止递归
所以计算fun( 2 ) = 2 + fun( 1 ) = 2 +1
fun( 3 ) = 3 + fun( 2 ) = 3 +2 +1....
fun( 10) = 10 + fun( 9 ) = 10 + 9 + 8 +....+ 2 + 1 = 55
其实递归算法不是很难,楼主可以这样看,对于这个我们记fun( n ) 为 a(n)
因此很容易得到a( n )= n + a( n-1 )
初始值a( 1 ) = 1
计算a( 10 )就是了
其他递归算法也是类似的,具体可以看谭浩强c程序设计里面递归讲解
其他的都是浮云,关键是x=fun(x)
楼主说x初始值为10,那我们看,fun(10)等于多少
把10带入fun里面,走一下,返回值是return( 10 + fun( 9 ) )
因此。我们计算fun( 9 ),再次带入fun( 9 )返回值是9 + fun( 8 )
不断带入,每一次fun()里面的参数都减一,直到变为fun( 1 ),
由于if(n==1)return 1,因此fun( 1 )返回的是1,停止递归
所以计算fun( 2 ) = 2 + fun( 1 ) = 2 +1
fun( 3 ) = 3 + fun( 2 ) = 3 +2 +1....
fun( 10) = 10 + fun( 9 ) = 10 + 9 + 8 +....+ 2 + 1 = 55
其实递归算法不是很难,楼主可以这样看,对于这个我们记fun( n ) 为 a(n)
因此很容易得到a( n )= n + a( n-1 )
初始值a( 1 ) = 1
计算a( 10 )就是了
其他递归算法也是类似的,具体可以看谭浩强c程序设计里面递归讲解
展开全部
X=fun(x);
换个变量名字,
int a=fun(x);
printf("%d\n",a);
就行了。
换个变量名字,
int a=fun(x);
printf("%d\n",a);
就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-04-30
展开全部
这是递归运算,求的就是10+9+8+7+6+5+4+3+2+1=55
通过调用fun(10)=10+fun(9); fun(9)=9+fun(8); fun(8)=8+fun(7); ........依此类推....; fun(1)=1; 这是递推过程
递推结束后。就要回归,从fun(1)=1; 可以计算出fun(2)=2+fun(1)=2+1=3; fun(3)= 3+fun(2)=3+3=6; fun(4)=4+fun(3)=4+6=10; ....依次类推.....; fun(10)=10+fun(9)=10+45=55
通过调用fun(10)=10+fun(9); fun(9)=9+fun(8); fun(8)=8+fun(7); ........依此类推....; fun(1)=1; 这是递推过程
递推结束后。就要回归,从fun(1)=1; 可以计算出fun(2)=2+fun(1)=2+1=3; fun(3)= 3+fun(2)=3+3=6; fun(4)=4+fun(3)=4+6=10; ....依次类推.....; fun(10)=10+fun(9)=10+45=55
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的问题什么意思呢。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询