递归算法

递归与循环有相同之处,但是区别很大;代码简洁,但是理解复杂

通过题目来使用循环和递归,观察区别


提示用户输入一个正整数n,求出并输出下列结果:1! + 2! + 3! + 4! + ... + n!
要求:用至少两种方式实现(函数名自拟,函数个数不限)
① 非递归
② 递归

//非递归

     int main(){

  int n;

 int  sum = 0;

  scanf("%d", &n);

  for (int i = 1; i <= n; i++){

  int num = 1;

  for (int m = 1; m <= i; m++){

  num = num*m;

  }

  sum += num;

  }

  printf("%d", sum);

  system("pause");

  return 0;

 }

//递归

#define  _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#include<stdlib.h>

 //递归套递归

int digui2(int m){

if (m == 1){

return digui(m);

}

else

{

return digui(m) + digui2(m - 1);

}

}

int digui(int n){

if (n == 1)

return 1;

else

{

 

return n*digui(n - 1);

}

 

}

int main(){

int n;

scanf("%d", &n);

digui(n);

int  sum = digui2(n);

printf("%d", sum);

system("pause");

return 0;

}

posted @ 2016-11-24 15:22  过不去的过去  阅读(70)  评论(0编辑  收藏  举报