求a的阶乘
加入a为5,输入后则调用Factorial函数,函数会做出返回值。第一次返回5*Factorial(4),此时不知道Factorial(4)的值,Factorial(4)会再次调用Factorial函数,会做出第二次返回的值4*Factorial(3),同理第三次3*Factorial(2);第四次2*Factorial(1);第五次1*Factorial(0)=1*1。
函数:
int Factorial(int n)
{
if (n == 0)
{
return 1;
}
else
{
return n * Factorial(n - 1);
}
}
加上主函数:
#include<iostream>
using namespace std;
int Factorial(int n)
{
if (n == 0)
{
return 1;
}
else
{
return n * Factorial(n - 1);
}
}
int main()
{
int a, sum=0;
cin >> a;
sum=Factorial(a);
cout << sum << endl;
system("pause");
return 0;
}
运行的截图:
汉诺塔问题的描述:
函数(包含注释):
//将src上的盘子移动到dest上,以mid为中转站。
void Hanoi(int n, char src, char mid, char dest)
{
//n为盘子的数量
if (n == 1) //如果盘子的数量为1,直接从src转移到dest上面,不用在中转。
{
cout << src << "->" << dest << endl;
return; //递归终止
}
else //当盘子的数量不为1时
{
Hanoi(n - 1, src, dest, mid); //先将n-1个盘子从src上面移动到mid上。
cout << src << "->" << dest << endl;//将src上的最后一个盘子直接移动到dest上。
Hanoi(n - 1, mid, src, dest);//再将mid上的n-1个盘子移动到dest上面。
}
return;
}
完成代码段:
#include<iostream>
using namespace std;
//将src上的盘子移动到dest上,以mid为中转站。
void Hanoi(int n, char src, char mid, char dest)
{
//n为盘子的数量
if (n == 1) //如果盘子的数量为1,直接从src转移到dest上面,不用在中转。
{
cout << src << "->" << dest << endl;
return; //递归终止
}
else //当盘子的数量不为1时
{
Hanoi(n - 1, src, dest, mid); //先将n-1个盘子从src上面移动到mid上。
cout << src << "->" << dest << endl;//将src上的最后一个盘子直接移动到dest上。
Hanoi(n - 1, mid, src, dest);//再将mid上的n-1个盘子移动到dest上面。
}
return;
}
int main()
{
int n;
cin >> n; //输入盘子的数量
Hanoi(n, 'A', 'B', 'C');
system("pause");
return 0;
}
可以运行实现。