33,008
社区成员
发帖
与我相关
我的任务
分享
int H(int n,int a,int b)
{
00F12910 push ebp
00F12911 mov ebp,esp
00F12913 sub esp,0C0h
00F12919 push ebx
00F1291A push esi
00F1291B push edi
00F1291C lea edi,[ebp-0C0h]
00F12922 mov ecx,30h
00F12927 mov eax,0CCCCCCCCh
00F1292C rep stos dword ptr es:[edi]
if (n==0) return b+1;
00F1292E cmp dword ptr [n],0
00F12932 jne H+2Ch (0F1293Ch)
00F12934 mov eax,dword ptr [b]
00F12937 add eax,1
00F1293A jmp H+87h (0F12997h)
if (n==1) return a+b;
00F1293C cmp dword ptr [n],1
00F12940 jne H+3Ah (0F1294Ah)
00F12942 mov eax,dword ptr [a]
00F12945 add eax,dword ptr [b]
00F12948 jmp H+87h (0F12997h)
if (n==2) return a*b;
00F1294A cmp dword ptr [n],2
00F1294E jne H+49h (0F12959h)
00F12950 mov eax,dword ptr [a]
00F12953 imul eax,dword ptr [b]
00F12957 jmp H+87h (0F12997h)
if (n>=3&&b==0) return 1;
00F12959 cmp dword ptr [n],3
00F1295D jl H+5Ch (0F1296Ch)
00F1295F cmp dword ptr [b],0
00F12963 jne H+5Ch (0F1296Ch)
00F12965 mov eax,1
00F1296A jmp H+87h (0F12997h)
return H(n-1,a,H(n,a,b-1));
00F1296C mov eax,dword ptr [b]
00F1296F sub eax,1
00F12972 push eax
00F12973 mov ecx,dword ptr [a]
00F12976 push ecx
00F12977 mov edx,dword ptr [n]
00F1297A push edx
00F1297B call H (0F1130Ch)
00F12980 add esp,0Ch
return H(n-1,a,H(n,a,b-1));
00F12983 push eax
00F12984 mov eax,dword ptr [a]
00F12987 push eax
00F12988 mov ecx,dword ptr [n]
00F1298B sub ecx,1
00F1298E push ecx
00F1298F call H (0F1130Ch)
00F12994 add esp,0Ch
}
#include <iostream>
using namespace std;
int H(int n,int a,int b);
int main()
{
cout<<H(4,3,3)<<endl;
system("PAUSE");
return 0;
}
int H(int n,int a,int b)
{
if (n==0) return b+1;
if (n==1) return a+b;
if (n==2) return a*b;
if (n>=3&&b==0) return 1;
return H(n-1,a,H(n,a,b-1));
}
#include <iostream>
using namespace std;
int H(int n,int a,int b);
int main()
{
cout<<H(3,4,6)<<endl;
system("PAUSE");
return 0;
}
int H(int n,int a,int b)
{
if (n==0) return b+1;
if (n==1&&b==0) return a;
if (n==2&&b==0) return 0;
if (n>=3&&b==0) return 1;
return H(n-1,a,H(n,a,b-1));
}