当前位置:编程学习 > C/C++ >>

#include<stdio.h> int solve(int n,int m) { int i,sum; if (m==1); return 1; sum=0; for(i=1;i<n;i++)

sum+=solve(i,m-1); return sum; }int main() { int n,m; scanf("%d,%d",&n,&m); printf("%d\n",solve(n,m)); return 0;} 输入 7,4 输出20 麻烦说明一下这个程序的过程 仔细说一下solve这个的作用
追问:恩恩 多打了一个‘;’
每次循环sum的值是多少?solve(*,*)里的值是给了N和M吗?第一次在for循环solve的值是(1,3)那么就跳出for循环了 而if也不会执行 这之后呢?
之后的值就输出了?这之后呢?最后printf输出的数是什么?当这个值返回给sum之后继续进行if和for的语句命令吗?如果继续进行的话 这时候N和M的值是上一次的还是一开始输入的?对了sum累计的值是什么?都不满足跳出的时候 这个值就被输出了么?
其他:我想知道你这个程序对吗?你自己运行了么?孩子…… 递归调用solve   n-1次 
每次递归调用时,m都减1并且用sum来累计每次返回的值
 
m=1时,返回1 

上一个:c语言源程序中不能表示的数制是
下一个:c++里继承的三种实现形式:实现继承、可视继承、接口继承

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,