Suggestions
Use up and down arrows to review and enter to select.Please wait while we process your payment
If you don't see it, please check your spam folder. Sometimes it can end up there.
If you don't see it, please check your spam folder. Sometimes it can end up there.
Please wait while we process your payment
By signing up you agree to our terms and privacy policy.
Don’t have an account? Subscribe now
Create Your Account
Sign up for your FREE 7-day trial
Already have an account? Log in
Your Email
Choose Your Plan
Save over 50% with a SparkNotes PLUS Annual Plan!
Purchasing SparkNotes PLUS for a group?
Get Annual Plans at a discount when you buy 2 or more!
Price
$24.99 $18.74 /subscription + tax
Subtotal $37.48 + tax
Save 25% on 2-49 accounts
Save 30% on 50-99 accounts
Want 100 or more? Contact us for a customized plan.
Your Plan
Payment Details
Payment Summary
SparkNotes Plus
You'll be billed after your free trial ends.
7-Day Free Trial
Not Applicable
Renews June 14, 2023 June 7, 2023
Discounts (applied to next billing)
DUE NOW
US $0.00
SNPLUSROCKS20 | 20% Discount
This is not a valid promo code.
Discount Code (one code per order)
SparkNotes Plus subscription is $4.99/month or $24.99/year as selected above. The free trial period is the first 7 days of your subscription. TO CANCEL YOUR SUBSCRIPTION AND AVOID BEING CHARGED, YOU MUST CANCEL BEFORE THE END OF THE FREE TRIAL PERIOD. You may cancel your subscription on your Subscription and Billing page or contact Customer Support at custserv@bn.com. Your subscription will continue automatically once the free trial period is over. Free trial is available to new customers only.
Choose Your Plan
For the next 7 days, you'll have access to awesome PLUS stuff like AP English test prep, No Fear Shakespeare translations and audio, a note-taking tool, personalized dashboard, & much more!
You’ve successfully purchased a group discount. Your group members can use the joining link below to redeem their group membership. You'll also receive an email with the link.
Members will be prompted to log in or create an account to redeem their group membership.
Thanks for creating a SparkNotes account! Continue to start your free trial.
Please wait while we process your payment
Your PLUS subscription has expired
Please wait while we process your payment
Please wait while we process your payment
Imagine the following scenario. You're a talented programmer at Robot Works, Inc. One day, a valuable customer of yours, Gene Roddenberry (of Star Trek fame), comes to you with a problem. He is creating a new TV show called "Star Trek: The Next Generation" and one of his characters in the show, Data, is an android. At the last minute, the actor who was supposed to play Data canceled on the show, and as they couldn't find another actor good enough to fill the part, they're looking for Robot Works, Inc. to build them an actual android.
While the rest of your company busily works on getting Data built, you've been assigned the task of programming him to walk (a simple enough task for a human, but for a robot, not quite so easy). After sorting through the manual produced by the other groups of your company, and after many grueling hours, you finally produce a function that will allow Data to take a single step: void take_a_step(). You call it a day.
The next day you come into work and your boss, Mr. Applegate, asks you how much progress you've made. You tell him you're done. "I'm done," you say. "But," responds your boss, "you've only written this one function take_a_step(). How can you be done? Don't you need to write functions to teach it how to take two steps? And three steps? And 100 steps?" You chuckle to yourself slightly as a knowing smile crosses your face, the smile of a person who understands the power of recursion.
What is recursion? Sometimes a problem is too difficult or too complex to solve because it is too big. If the problem can be broken down into smaller versions of itself, we may be able to find a way to solve one of these smaller versions and then be able to build up to a solution to the entire problem. This is the idea behind recursion; recursive algorithms break down a problem into smaller pieces which you either already know the answer to, or can solve by applying the same algorithm to each piece, and then combining the results.
Stated more concisely, a recursive definition is defined in terms of itself. Recursion is a computer programming technique involving the use of a procedure, subroutine, function, or algorithm that calls itself in a step having a termination condition so that successive repetitions are processed up to the critical step where the condition is met at which time the rest of each repetition is processed from the last one called to the first.
Don't worry about the details of that definition. The main point of it is that it is defined in terms of itself: "Recursion: ... for more information, see Recursion."
Please wait while we process your payment